powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
68 сообщений из 68, показаны все 3 страниц
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435581
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня проектов C++ немного.

До сих пор все C++ делал в 2005 EE.
Причем специально держу у себя вот эту древнюю сборку:
Microsoft Visual Studio 2005
Version 8.0.50727.762 (SP.050727-7600)
Microsoft .NET Framework Version 2.0.50727 SP
(то что написано в About).

При этом инсталлятору проги (на XP/2003) достаточно проверить наличие .Net 2.0 SP1 или выше и установить (если нету). После этого всегда и везде все работает.
На Висте и выше (до 10-ки) всегда все работает без доустановки чего либо.
Все. Никаких C++ redistributable никогда не надо!!!
Речь идет о чисто C/C++ (никаких .Net), но установка .Net указанной версии всегда спасает (мистика, но факт, проверено годами).

Но до сих пор у меня были только 32-битные C/C++.

Теперь у меня dll, которую надо сделать 2 варианта: Win32 и x64.
Сделал я пока на Win10 x64 VS2013 Ultimate C++ (Release x64 и Release Win32).
x64 на Win10 (где делал) работает отлично, про Win32 могу пока только сказать что компилируется.
В свойствах проекта пока что стоит
Общие-> Набор инструментов платформы = Visual Studio 2013 (v120).
И сдается мне что я с этим "набором" далеко не уеду.

Мне надо:
1) чтоб dll была Win32 и x64 (две версии)
2) чтоб работало XP->Win10-> (на всех OS начиная с XP, из-за одной dll от поддержки устаревшей XP отказываться пока не собираюсь)
3) чтоб не заниматься маразмом с "C++ redistributable"

Т.к. большой "проект" содержит не только C++ но и .Net,
то требование для него по любому:
XP/Win2003: .Net 2.0 SP1
Vista-Win10: .Net 4.5 (или выше)
(32-битник C++ VS2005 "v.50727" под это дело гарантированно запустится вообще на любой системе.)

Но вот как мне быть с 64-битником?
В VS2013 есть опция
Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp).
Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")?
Или что м.б. надо сделать, чтоб запускалось "где попало"?


Dll я бы не сказал что сложная, там сплошные Win API (сделана из MS-примера из SDK). Причем оригинальный MS-код как раз был под любимую мной 2005-ю студию.
Сдаунгрейдить под 2005-ю я наверно смогу без проблем, но у меня там нет x64.
Как поступить?

P.S. Я пока еще ничего не делал, пока у меня dll в VS2013, нужно как бы правильное направление "финализации/рантаймизации" понять.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435588
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77В VS2013 есть опция
Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp).
Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")?
Или что м.б. надо сделать, чтоб запускалось "где попало"?

Не будет. Но поставить надо, иначе в скомпилированном коде могут оказаться вызовы функций WinAPI, которых в XP не было.

Чтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта :
С/С++ => Code generation => Runtime Library = Multi-threaded (/MT)

Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт, например при выделении памяти одним и освобождение другим.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435593
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Но вот как мне быть с 64-битником?Никак. Технически, вероятно, проект с настройками "для XP" соберётся (и будет работать) в любой разрядности, но смысла нет.
Windows Server 2003 x64 сейчас - не имеет смысла. XP64 официально не продавалась и вообще не имеет смысла. Но будет ли это по дефолту запускаться "где попало"? (без "C++ redistributable")? Без рантайма работает то, что статически собрано. С отдельным исполняемым файлом - проблем нет. Исполняемый файл и разделяемая библиотека создают проблему "статических копий рантайма". Я не знаю насколько это критично вообще и критично ли конкретно для вашего проекта. Или что м.б. надо сделать, чтоб запускалось "где попало"? Проще всего - установить необходимый рантайм.
Я, например, вообще "закатываю" рантаймы с VS2005 по VS2015 в образ системы (w7). Пришлось, правда, повозиться, чтобы ставить всё через msi, без exe-обёрток.
Все рантаймы , до VS2015 включительно, совместимы с Windows XP SP3/Server 2003 SP2.

P.S. Сервиспаки - важны, т.к. есть манифесты, на которых Windows XP SP2 будет валиться в синьку.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435596
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Basil A. Sidorov,

>Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт
>Исполняемый файл и разделяемая библиотека создают проблему "статических копий рантайма". Я не знаю насколько это критично вообще и критично ли конкретно для вашего проекта.

Основной процесс называется C:\WINDOWS\system32\fxssvc.exe (Windows Fax Service)
Он вызывает "мою dll" (провайдер FSP) - о которой речь.
На разных OS fxssvc.exe естественно "своей версии" и уж не знаю как это с рантаймами сочетается, но принцип один и документация единая (начиная с Win2000).
Важно, что на x64 -это 64-битный процесс (даем на вход 64-битную dll), на Win32-соотв. 32-битный.

Dima TЧтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта :
С/С++ => Code generation => Runtime Library = Multi-threaded (/MT)
У меня (это DLL) стоит:
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD)
Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать).

Basil A. SidorovДмитрий77Но вот как мне быть с 64-битником?Никак. Технически, вероятно, проект с настройками "для XP" соберётся (и будет работать) в любой разрядности, но смысла нет.
Windows Server 2003 x64 сейчас - не имеет смысла. XP64 официально не продавалась и вообще не имеет смысла.

Предполагается всего 2 единых файла (каждый должен работать "от" и "до" на своей разрядности):
1) _Win32.dll
2) _Win64.dll
Предполагаю скомпилировать их "идентично" (меняя только Win32/x64).
x64 будет тестироваться на Win10, 8.1, Vista, 2012R2 -то что есть для теста под рукой, 2016 видимо поставлю, еще его не видел
Win32 - на Win7, XP, 2003 -опять же что уже есть на тест-машинах.

Если эта пара будет работать в этом наборе, то предположительно будет работать и на всем остальном (специально ставить XP x64 2003 x64, равно как и Win10 32бит сейчас , которых у меня не стоит понятно не собираюсь.) Ну, если ошибусь, то придется допиливать баги по необходимости, но думаю не ошибусь если добьюсь работу пары на указанных в пред. абзаце.

Вопрос даунгрейда до 2005 c компиляцией в рантайм "8.0.50727.762" и компиляцией как-то под x64 нет смысла рассматривать? Просто "8.0.50727.762" - это то чему я 100% доверяю (потому что это проверено 10-летием, а мне надо чтоб работало, а не "модные" тяжеловесные довески за собой таскать).
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435601
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77У меня (это DLL) стоит:
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD)
Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать).
Речь не о том что ты DLL делаешь, а о том что твоя DLL будет использовать рантайм в виде внешних DLL. Переключай на /MT, тогда рантайм будет внутри твоей DLL.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435608
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДмитрий77У меня (это DLL) стоит:
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточный DLL(/MD)
Оно? Так оставить? И скорее всего это пришло из исходного SDK-примера (я такие вещи стараюсь вообще не трогать).
Речь не о том что ты DLL делаешь, а о том что твоя DLL будет использовать рантайм в виде внешних DLL. Переключай на /MT, тогда рантайм будет внутри твоей DLL.
главное не забывать смотреть depend'ом после сборки не осталось ли ссылок на рантайм dll.
(например, при включении поддержки OpenMP - dll рантайм будет цепляться всегда)
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435612
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Dll я бы не сказал что сложная, там сплошные Win API
она с или с++ ?

при некоторых усилиях можно собраться без С-рантайма совсем.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39435622
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собраться-то можно, вопрос только в том - покрывает ли системное подмножество функции CRT множество функций CRT, используемое в программе.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436033
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомпилировал (пока Win32):
Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp).
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточная(/MT)

DLL стала в 3 раза больше по размеру, на XP ну как минимум "схватилась" (девайсы появились в списке и ошибок в журнал не пишет, до этого (без /MT и/или без v120_xp ) было Err126 Не найден/не удалось загрузить модуль)

Но меня смущает, что при компиляции появилась куча ругани:
Код: plaintext
1.
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(46): warning C4995: gets: имя помечено как #pragma deprecated



[
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
1>------ Перестроение всех файлов начато: проект: ...FSP, Конфигурация: Release Win32 ------
1>  Reg.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(46): warning C4995: gets: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(50): warning C4995: sprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(53): warning C4995: vsprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(20): warning C4995: strcat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(21): warning C4995: strcpy: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(29): warning C4995: swprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(30): warning C4995: vswprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(32): warning C4995: wcscat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(34): warning C4995: wcscpy: имя помечено как #pragma deprecated
1>  ...FSP.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(46): warning C4995: gets: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(50): warning C4995: sprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(53): warning C4995: vsprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(20): warning C4995: strcat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(21): warning C4995: strcpy: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(29): warning C4995: swprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(30): warning C4995: vswprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(32): warning C4995: wcscat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(34): warning C4995: wcscpy: имя помечено как #pragma deprecated
1>  Util.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(46): warning C4995: gets: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(50): warning C4995: sprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstdio(53): warning C4995: vsprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(20): warning C4995: strcat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cstring(21): warning C4995: strcpy: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(29): warning C4995: swprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(30): warning C4995: vswprintf: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(32): warning C4995: wcscat: имя помечено как #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cwchar(34): warning C4995: wcscpy: имя помечено как #pragma deprecated
1>     Создается библиотека C:\Setup\FSP\FSP_64\cpp\Release\...FSP.lib и объект C:\Setup\FSP\FSP_64\cpp\Release\...FSP.exp
1>  Создание кода
1>  Создание кода завершено
1>  ...FSP.vcxproj -> C:\Setup\FSP\FSP_64\cpp\Release\...FSP.dll
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========


И вот забивать мне на это или что-то надо сделать умное?
ИзопропилДмитрий77Dll я бы не сказал что сложная, там сплошные Win API
она с или с++ ?

при некоторых усилиях можно собраться без С-рантайма совсем.
Я в этом не разбираюсь, но скорее C чем C++.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436037
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

https://msdn.microsoft.com/ru-ru/library/2029ea5f.aspx

по новому стандарту они признаны небезопасными и устаревшими
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436042
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И вот забивать мне на это или что-то надо сделать умное?
Это потенциальные места где может произойти переполнение буфера. По хорошему лучше заменить на рекомендуемые аналоги. Сложного в этом ничего нет.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436054
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),Dima T,

а у меня в коде НЕТУ функций, на которые он "ругается".
Предупреждения возникают только если поставить
Общие-> Набор инструментов платформы = Visual Studio 2013 - Windows XP (v120_xp).
(/MT /MD пофиг)

Так какой путь правильный?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436062
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,
#include <stdio.h> вместо <cstdio>
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436088
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Дмитрий77,
#include <stdio.h> вместо <cstdio>
А у меня и есть #include <stdio.h> и НЕТУ <cstdio>.

Но, МИСТИКА.
Общие-> Набор инструментов платформы = Visual Studio 2013 ( v120 ). !!!без v120 _xp
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточная(/MT)

И оно завелось на XP (Как проверить, что у меня там "вдруг случайно" на системе уже не стоит "рантаймов", в программах там вижу явно только VC++ 2008 EE, 2008 Redistr.-x86 9.0.30729, несколько SDK VS 2008 - не помню откуда взялись, система тестовая почти чистая, но к VS2013 мне кажется это никаким боком не соотносится).

Dima TНо поставить <прим.: v120 _xp > надо, иначе в скомпилированном коде могут оказаться вызовы функций WinAPI, которых в XP не было.
А мож не надо и /MT достаточно? Если компилятор без нее не ругается и dll на XP заводится?
Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано,
свои API если и добавил парочку, то точно не "новых", а использовал в основном все в духе SDK-примера.

Надо б еще на Win2003 проверить, она у меня вообще чистая (правда .Net 3.5 там уже стоит).
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436089
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dima T]Дмитрий77Чтобы рантаймы не таскать можно статическую линковку сделать. В свойствах проекта :
С/С++ => Code generation => Runtime Library = Multi-threaded (/MT)

Но тут тоже есть подводные камни: если внутри процесса используется несколько разных рантаймов возможен их конфликт, например при выделении памяти одним и освобождение другим.

Это практически неработоспособно, если приложение использует модули (.dll), кроме системных.
В общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя.
Нужно линковать CRT тоже динамически. Иначе -- да, в приложении будет несколько экземпляров CRT, и нарушение ODR со всеми последствиями (неизвестными).
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436094
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто практически неработоспособно

преувеличение.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436097
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Как проверить, что у меня там "вдруг случайно" на системе уже не стоит "рантаймов"
на зависимости своей библиотеки глянь - и увидишь что она пользует кроме kernel etc
(Dependency Walker, например)
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436099
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя.
Нет, сторонние dll не использует. Только ms-API. Со сторонней кухней оно общается исключительно через mailslot-ы.
Хотя я туда добавил много отсебятины с использованием в частности std::wstring, std::wstringstream, надо же как то с этими вашими строками бороться (но это здесь не обсуждается, переписывать код dll уже не буду, она полностью рабочая и уже где-то месяц запущена гоняется тестово на Win10 без проблем).
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436101
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано
Думаю все-таки надо. Дело не в твоем коде. Это не твои вызовы, это вызовы самого рантайма.
У меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436103
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77std::wstring, std::wstringstream
значит с++

если эти строки и другие экземпляры классов за пределы DLL не передаются,Exceptions не используются и
нет никаких фокусов - статическая линковка будет жить.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436105
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TУ меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму.
и toolset XP - совместимый был?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436106
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77MasterZivВ общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя.
Нет, сторонние dll не использует.

Не сторонние, а ЛЮБЫЕ DLL.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436112
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто практически неработоспособно, если приложение использует модули (.dll), кроме системных.
В общем, правило такое, если приложение использует .dll-и, и хотя бы одна .dll использует CRT, то так делать нельзя.
Нужно линковать CRT тоже динамически. Иначе -- да, в приложении будет несколько экземпляров CRT, и нарушение ODR со всеми последствиями (неизвестными).
Работоспособно, если не используются все доступные навороты С/С++. Какой может быть глюк если функция из DLL получает буфер и просто его заполняет? Или наоборот, получает заполненный и что-то с ним делает?

У меня это отлично работает.

Этих CRT уже 100500. Когда писал DLL для FoxPro6 использовал динамический рантайм, он был один на всех. Эта же DLL отлично работает с FoxPro9 где рантайм 7.1, при этом другие виндовые DLL грузят в т.ч. старый рантайм. Переехав с VC6 на VC2015 переключил на статическую линковку. Единственный косяк VC2015 в том что используются команды не поддерживаемые процами ниже Pentium III
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436113
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima TУ меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму.
и toolset XP - совместимый был?
Нет. Я к тому и написал что надо совместимый выставлять. ЕМНИП это было в MSVС2012 где совместимость с XP просто выкинули.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436120
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

>если эти строки и другие экземпляры классов за пределы DLL не передаются,
НЕТ, используются только внутри (и то не везде) для манипуляций со склейкой строк и т.п.
Экспортируемые ф-ции DLL стандартно задокументированы MS и вызываются как __stdcall
там везде LPWSTR и им подобные
С другой стороны у меня mailslot-ы, но без "приведения типов" никакие строки туда опять же не уходят.

>Exceptions не используются
Конструкций типа Net-оских try..catch я нигде не использую(знаю что в C есть что-то похожее)

>нет никаких фокусов
за мной замечены способности фокусника? думаю нет

Dima TДмитрий77Вряд ли там "могут оказаться вызовы функций WinAPI, которых в XP не было", пример из SDK древний, в MSFax если чего и менялось, то только на Висте и с FSP-dll кухней это никак не связано
Думаю все-таки надо. Дело не в твоем коде. Это не твои вызовы, это вызовы самого рантайма.
У меня что-то типа "Hello world" не стартовало под XP, т.к. GetTickCount64() зачем-то надо рантайму.
Нафига v120_xp? Если стартует и без него? Чтоб читать ругань компилятора про deprecated?
Я так понимаю про C++, оно либо сразу не стартует, либо если стартует (а у меня стартует), то уже работает как часики.
Или может вдруг внезапно где-то скрашить?

Я думаю надо пока оставлять
Код: plaintext
1.
2.
Общие-> Набор инструментов платформы = Visual Studio 2013 (v120). !!!без v120_xp
С/С++ => Создание кода => Библиотека времени выполнения= Многопоточная(/MT)


и не парить мозги ни себе ни людям.
Если что не так, обязательно вылезет (причем быстро вылезет) как соберу пакет и инсталлятор и протестирую в комплексе на тех OS что собирался. Счас я только могу убедится в том что dll зацепилась системой и девайсы видятся в MSFax после старта службы, даже логи dll еще не смотрел, хотя интуитивно понятно, что все хорошо уже.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436125
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Нафига v120_xp? Если стартует и без него? Чтоб читать ругань компилятора про deprecated?
Я так понимаю про C++, оно либо сразу не стартует, либо если стартует (а у меня стартует), то уже работает как часики.
Или может вдруг внезапно где-то скрашить?
Если стартует то можно и без него, проблемы только на старте могут быть. Но ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436132
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНо ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
Да, но без _xp опции этих предупреждений нет. И то о чем предупреждают в МОЕМ коде тоже НЕТ. Видимо _xp цепляет то, что "потенциально опасно", а положительного толка от _xp в моем случае видимо ничего нет.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436135
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Dima TНо ругань компилятора с этим никак не связана. Были бы проблемы - не откомпилировал, а тут просто предупреждения о потенциально опасных местах в коде.
Да, но без _xp опции этих предупреждений нет. И то о чем предупреждают в МОЕМ коде тоже НЕТ. Видимо _xp цепляет то, что "потенциально опасно", а положительного толка от _xp в моем случае видимо ничего нет.
Это происки маркетологов MS и не более того. Проблема как была так и осталась, а сообщать или нет о ней это маркетинг.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436143
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

У тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om

Нужно носить с собой рантайм от студии 2013
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436159
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУ тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om

Нужно носить с собой рантайм от студии 2013
кому должна?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436177
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУ тебя должна использоваться msvcr120.dll - можешь проверить processexplorer'om
Если смотреть hex-ом то она упомянается:
Код: plaintext
1.
2.
t@std@@QAE@H@Z C&#9827;?uncaught_exception@std@@YA_NXZ э&#9786;?_Getgloballocale@locale@st»
w&#9829;_itow_s /&#9827;_vsnwprintf MSVCR120.dll  Ф&#9829;_lock &#9830;&#9827;_unlock .&#9787;_calloc_crt о&#9786;__dllo»


Но на тестовом XP ее поиском не нашел.
А dll запускается.
А разве /MT не подсасывает "необходимое"?

Но проблемы уже возникли. На 2003 dll вроде стартовала (несколько ф-ций прошли, я лог запустил), а потом бац,
fxssvc.exe выдала в журнал Er. 0xc000001D, fault module _my.dll, загрузка службы факсов соотв. висит.
Вторая ошибка в журнале от самой dll, типа fault address 00001d5e.

И я вот думаю, это "чет не хватает" или уже проблемы в самом коде, на сервере, даже на 2012R2 я ее еще не обкатывал.
Там разница в том, что на XP/Win10 только один девайс может быть "активным", а на сервере - много (условия использования MSFax).
Но я вроде MS-логику и код в этом пункте не нарушал, там под каждый девайс свой поток.

Ну для начала думаю надо xp_120 компильнуть и посмотреть поможет ли это запуску на Win2003.
А если не поможет, то делать тест на 2012R2 и уже копаться в коде если там будет то же самое.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436180
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А разве /MT не подсасывает "необходимое"?
но не гарантирует ничего - говорил уже об OpenMP в частности

Дмитрий77Если смотреть hex-ом то она упомянается:
а если гланды через анус не удалять, а напустить утилиту анализа импорта?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436182
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

если код - "не секретный" - выложи.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436190
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77,

если код - "не секретный" - выложи.

Свой выкладывать не буду.
Но "оригинал" из MS SDK я выкладывал еще в январе, когда был в начале пути.
Из него в принципе структура ясна и документация есть (если просто понять что там используется).
20127697
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436192
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Но проблемы уже возникли. На 2003 dll вроде стартовала (несколько ф-ций прошли, я лог запустил), а потом бац,
fxssvc.exe выдала в журнал Er. 0xc000001D, fault module _my.dll, загрузка службы факсов соотв. висит.
Вторая ошибка в журнале от самой dll, типа fault address 00001d5e.

И я вот думаю, это "чет не хватает" или уже проблемы в самом коде, на сервере, даже на 2012R2 я ее еще не обкатывал.
Там разница в том, что на XP/Win10 только один девайс может быть "активным", а на сервере - много (условия использования MSFax).
Но я вроде MS-логику и код в этом пункте не нарушал, там под каждый девайс свой поток.

Ну для начала думаю надо xp_120 компильнуть и посмотреть поможет ли это запуску на Win2003.
А если не поможет, то делать тест на 2012R2 и уже копаться в коде если там будет то же самое.

xp_120 на 2003-м не спасло. Вылетает (но не в самом начале!!!), где и на чем пока ХЗ.
Пойду для начала ситуацию на 2012R2 гляну.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436194
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

"оригинал" собирается со статическим рантаймом без проблем
зависимости - kernel32.dll,advapi32.dll
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436204
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77,

"оригинал" собирается со статическим рантаймом без проблем
зависимости - kernel32.dll,advapi32.dll
Ну и неоригинал видимо тоже.

На 2012R2 у меня все запустилось, хотя с первого раза не получилось. Кинул папку с dll на рабочий стол админа, оттуда зарегил, служба факсов отмочила Не удалось загрузить dll (Err5-нет прав доступа, с чего бы это). Из другой папки все завелось.
По крайне мере фу, не глобал error в коде.

А 32-битнику на Win2003 чего-то не нравится.
FaxDevVirtualDeviceCreation -отрабатывает
FaxDevInitialize-отрабатывает
(и девайсы в реестре образуются как положено)

А дальше должно быть в логе
---fnFaxLineCallback (Device=0) Enter---

Там кода то нету:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
VOID CALLBACK
FaxLineCallback(
                IN HANDLE     FaxHandle,
                IN DWORD      hDevice,
                IN DWORD      dwMessage,
                IN DWORD_PTR  dwInstance,
                IN DWORD_PTR  dwParam1,
                IN DWORD_PTR  dwParam2,
                IN DWORD_PTR  dwParam3
               )
{
        std::wstring buffer;
        std::wstringstream to_buffer;

        // pdwDeviceId is the pointer to the virtual fax device identifier
        LPDWORD   pdwDeviceId;
        // hThread is a handle to the thread to watch for an incoming fax transmission
        HANDLE    hThread;

        WriteDebugString(L"---fnFaxLineCallback (Device=%d) Enter---\r\n", hDevice - NEWFSP_DEVICE_ID_PREFIX);
        WriteDebugString(L"   fnFaxLineCallback (Device=%d): Receive=%d;Send=%d\r\n", hDevice - NEWFSP_DEVICE_ID_PREFIX, (dwParam1 != 0), (dwParam2 != 0));
...



До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая) , из журнала 2003-го только ясно, что 00001d5e is fault address, т.е. ничего не ясно.
И вот с чем это связано: рантаймы или таки в коде что не так.
Надо видимо добавить еще дебага, чтоб хоть понять доходит ли дело до вызова этой ф-ции.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая)
пара конструкторов - не считается?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436213
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77До первого в этой ф-ции WriteDebugString дело не доходит (а эта строчка по сути первая)
пара конструкторов - не считается?
А ты прав однако,
Код: plaintext
1.
2.
3.
        WriteDebugString(L"---fnFaxLineCallback Enter---\r\n");
        std::wstring buffer;
        std::wstringstream to_buffer;


Первая строка проходит, а на "C++ конструкторах" очевидно и вылетает в мир иной.
В первых двух ф-циях эти штуки отсутствуют, поэтому они и проходят.
(на XP почему-то и дальше все гладко)
И какое направление мысли? Эти std::string вы мне сами насоветовали, еще раз корячиться со строками не хочу.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436215
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И какое направление мысли?спрошу на всякий случай. Твои длл в релизе ведь собраны, да?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436217
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

Да, в Release, при этом изначально был Debug. Я тут пытался эту разницу прояснить как-то, но ответа не получил. И так понял, что если я Release создаю из Debug, то это вообще одно и то же будет.

У MS в оригинальном проекте все операции со строками построены на StringCchCopy с ручным выделением памяти.
Типа вот такие простыни по каждому случаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    // Set the completion packet's routing string to RoutingInfo
	pFaxDevStatus->RoutingInfo = NULL;
    if (RoutingInfo != NULL) {
      pFaxDevStatus->RoutingInfo = (LPWSTR)((UINT_PTR)pFaxDevStatus + upStringOffset);
      hr = StringCchCopy(pFaxDevStatus->RoutingInfo, (lstrlen(RoutingInfo) + 1), RoutingInfo);
      if (hr != S_OK)
      {
        WriteDebugString(L"StringCchCopy failed, hr = 0x%x for pFaxDevStatus->RoutingInfo\r\n", hr);
      }
      upStringOffset += (lstrlen(RoutingInfo) + 1) * sizeof(WCHAR);
    }

Еще и так понимаю с ручным MemAllocMacro(dwSize); всякий раз

Ну, я понимаю что это "родные API".
И несмотря в общем-то логическую простоту да и в общем-то немногочисленность действий,
переписывать все еще раз (с учетом того что весь этот string-маразм в общем-то уже отлажен) - это сидеть тупо вешаться.
И понятно, что StringCchCopy + LPWSTR это то что MS "уважает и пропускает", и рантаймы не нужны.
Но это времени уйдет еще вагон а прирост интеллекта =zero.

Где надо было, я и возился с этими StringCchCopy.
А свои внутренние string-комбинации я делал через std::wstring buffer + std::wstringstream
и не в первый раз их использую.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436218
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И так понял, что если я Release создаю из Debug, то это вообще одно и то же будет.для дебага и для релиза рантаймы разные нужны, соответствующие. Релизная сборка не содержит отладочной информации и некоторых отладочных костылей. Ну и оптимизации все проведены, которые в дебаге отключены.
На первый взгляд, у тебя наблюдается отличие в рантаймах. std::wstring зовётся не оттуда, откуда ты думаешь. А на хрюше случайно получилось, что звалось откуда надо. Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт)

P.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436224
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

да фигня какая-то
>Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт
не повезло, без изменений

Психанул, скомпилировал в /MD, установил Redist.2013 на Win2003.
Хоть с v120_xp, хоть без него ни фига не заводится

std::wstring buffer;
std::wstringstream to_buffer;
cъело,
а при попытке чего то записать в этот самый buffer/to_buffer очевидно быстренько загнулось, больше негде.
Снес Redist.2013 с Win2003 пока систему не загадил.

Здесь похоже 2 варианта:
1) сидеть-вычищать все std::wstring / std::wstringstream и менять на StringCchCopy/Cut тогда судя по всему / работать будет
(работы на месяц вперед)
2) Бухнуть в 2005 студию но уже проблемы, напр.
OVERLAPPED ov;
ov = {};
там почему-то не компилируется
и большая проблема с отсутствием там x64.

Ну еще есть вариант забить на XP/2003, но чет я уже за Висты и 7-ки не очень-то уверен с таким бардаком.
И обидно забивать из-за каких-то компиляторов/рантаймов, потому что поддерживать мне по инерции не шибко тяжело, а наработок как бы вагон.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436238
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychP.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))
готовить аккуратно надо - и нечего бояться

inprocess COM и плагины разнообразные - ведь работают,
да и dll в процессы внедряются, хуки работают
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436239
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Эти std::string вы мне сами насоветовали, еще раз корячиться со строками не хочу.
Нет, брат, с таким настроением ты слона не продашь! (с)
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436366
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych Релизная сборка не содержит отладочной информации и некоторых отладочных костылей.


Релизная сборка может содержать, а может и не содержать отладочную информацию.

egorychНа первый взгляд, у тебя наблюдается отличие в рантаймах. std::wstring зовётся не оттуда, откуда ты думаешь. А на хрюше случайно получилось, что звалось откуда надо. Подложи в папку со своей dll рантайм от своего компилятора, вдруг повезёт)

P.S. Это та самая картина, которой нас MasterZiv постоянно пугает уже который год, когда про dll рассказывает, кмк ))

Как бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436411
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77сидеть-вычищать все std::wstring / std::wstringstream и менять на StringCchCopy/Cut возьми код std::wstring и wstringstream, скопируй себе, помести его вместо std в mystd и тогда тебе придётся заменить по всему проекту только название пространства имён, зато ты будешь уверен, что берётся именно тот wstring, который тебе надо.

А зачем тебе x64 для работы с факсом, можешь рассказать, кстати?
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436415
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivРелизная сборка может содержать, а может и не содержать отладочную информацию.это правда, но объяснять ТС ещё и это мне не хочется, да ему это пока и не нужно
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436425
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКак бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.ну и что теперь, новички больше не смогут стать "не новичками"? Конечно категорично запретить проще, чем объяснить.

обходной вариант, когда без общего рантайма не обойтись: сделать свою рантайм-библиотеку

задефайнить используемые функции на "из своей dll", которая уже компонуется со статической линковкой
или даже просто указать компоновщику lib-файл к своей dll с требуемыми функциями, вместо либ рантайма

обычно для проектов это десяток-другой функций, вполне посильная задача

PS: Дмитрий77, например, для TotalComander есть плагин для просмотра импорта у файлов
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39436560
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)MasterZivКак бы проблема в том, что нужно очень чётко понимать, что делать можно, а что нет, когда так делаешь, и очень кропотливо отслеживать весь код. Новичкам это вообще не объяснить.ну и что теперь, новички больше не смогут стать "не новичками"? Конечно категорично запретить проще, чем объяснить.

0) категорично запрещал не я.
1) да, проще. и программы в итоге будут правильнее.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437644
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, что пока могу сказать.
Мувнул dll в любимую версию 2005 Express Edition.
32-битник заводится с полпинка на XP, 2003 и Win7 (больше не на чем проверить).
И 120% что заведется и на Win10 32-бит и на всем остальном, потому как собаку съел на этой безупречной сборке (все C++ exe и dll version="8.0.50727.762" по определению работают на XP/2003 при условии что установлен пакет ".Net Framework 2.0 SP1" или выше, и по определению работают на Висте и всем что выше-без доустановки чего либо; если обновить студию, 2005-ю, то сборка будет другая, по этой причине у меня на Win10, куда я эту сборку 2005-й студии правдами и неправдами воткнул, снят флажок "Устанавливать обновления для других продуктов MS").
В манифесте там к слову написано:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>



Только вот как мне аналогичный x64 сделать???

egorychА зачем тебе x64 для работы с факсом, можешь рассказать, кстати?
Объясняю.
Эта Dll -это не моя прихоть, это Fax Service Provider .
Она управляется не моим 32-битным приложением, а майкрософтовской службой факсов (FXSSVC.exe).
На 32-битной OS -эта кухня 32-битная, на 64-битной - соответственно 64-битная (без вариантов, не дублируется).
То что 32-битную dll из 64-битного exe-шника вызвать нельзя, полагаю не мне вам объяснять.

В принципе, я могу для x64 делать STATIC-файл в VS2013 (как бы базируясь на утверждении что XP x64 официально не выпускалась, а Win2003 x64 сейчас нафиг никому не нужен, для тех кто не в курсе WinXP x64 == Win Server 2003 x64), но, с учетом вскрывшихся проблем, я честно говоря не уверен ни за Висту, ни за 7-ку, ни за 8.1 ни вообще за произвольно взятый комп, насчет файла сделанного в 2013-й студии.
Просто зачем делать заведомую "какашку" v120 если можно (уверен) чуть напрячься и сделать "конфетку" "8.0.50727.762" да хоть бы и x64. Вот единственное чего бы я не хотел, так это ломать свою "сборку 2005-й студии", не зная четко алгоритма добавления в нее x64-поддержки. Но у меня есть куча тестовых систем на которых я мог бы "поиграться".

Поэтому вопрос бы поставил так:
Как корректно добавить x64 support в 2005-ю студию, если его там нет.
Ну или м.б. 2013-ю можно обучить делать заданную сборку? а я хочу version="8.0.50727.762" Да она старая, но она НОРМАЛЬНАЯ.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437658
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 Как корректно добавить x64 support в 2005-ю студию, если его там нет.
Ну или м.б. 2013-ю можно обучить делать заданную сборку? а я хочу version="8.0.50727.762" Да она старая, но она НОРМАЛЬНАЯ.

освоить чуть поглубже c/c++ и написать dll не использующий стандартный рантайм
сборка make'ом с явным указанием что творишь вместо мышкокликанья в студиях - тож помогает делу

в конце концов компиляцию и сборку делают cl.exe rc.exe link.exe, а студия - просто графическая оболочка
для их запуска, для хелловорд'ов - достаточно удобная

PS время на разборку с зоопарком студий и компиляторов ведь есть
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437671
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

ну не шибко то вижу руководство к действию в твоем ответе.
Я так понял погуглив, что либо нужна полная студия 2005, и там якобы есть x64 голые как ты вырузился "make"-и, либо надо доустанавливать какое-то SDK к EE, далее есть типа хитрые инструкции как сделать x64 доступным из оболочки-студии.

В моем случае все осложняется еще 2-мя моментами:
1) У меня не сохранился в чистом виде "лицензионный ключ 2005 EE", без которого она сдохнет через 30 дней, достать этот ключ сейчас невозможно (хоть он и бесплатен). Есть некоторые "дампы реестра" которые позволяют ее сделать "зарегистрированной" на любом компе, но при "манипуляциях" "лицензия" может слететь.
2) Манипулировать надо так, чтобы на выходе была именно сборка "8.0.50727.762", все остальные Redistrebutable-зависимы. Это не очень тривиальная процедура.

Счас пока качаю "хз откуда" iso полной 2005-й студии, ну и видимо придется экспериментировать на какой-нибудь тестовой системе. Если повезет, то удастся родить чего надо. Если очень повезет, то удастся сделать 2005 EE x64 на рабочем компе.

Изопропилсборка make'ом с явным указанием что творишь вместо мышкокликанья в студиях - тож помогает делу

в конце концов компиляцию и сборку делают cl.exe rc.exe link.exe, а студия - просто графическая оболочка
для их запуска,
Да я не против.
Вот что мне скачать и что сделать/написать/срисовать в cmd/bat-файле и т.п. чтоб было "8.0.50727.762"+"x64"?
h, cpp, def -файлы - они ведь те же самые.

Или м.б. можно где-то выдрать "инструменты под рантайм" и воткнуть их в VS2013, там же есть v120, v120_xp и куча еще интструментов на выбор - но не тот что мне нужен.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437688
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Введение в CMake

CMake решает очень много проблем с компиляцией, рекомендую
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437713
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

ещё раз - студия - это просто графическая оболочка.
из командной строки собирай с явным указанием ключей компилятора и путей ко всем потребным библиотекам
(например используя штатный nmake или cmake, на худой конец простым батником если исходников немного)

главное - под полным своим контролем.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437727
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

В настройках и так все видно.

ТС, очевидно, бубен ниасилил.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39437801
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Счас пока качаю "хз откуда" iso полной 2005-й студии, ну и видимо придется экспериментировать на какой-нибудь тестовой системе.Что там экспериментировать???
"Распаковали" iso-шку и получили каталог с кучей msi вперемешку с msp.
Создаём административную точку:
Код: plaintext
 for %A in (*.msi) do @echo %~nA&start/w/min msiexec /a "%~A" TARGETDIR="Полный\Путь" /q
Накатываем патчи:
Код: plaintext
 for %A in (*.msp) do @echo %~nA&start/w/min msiexec /a "Полный\Путь\%~nA.msi" /p "%~A" /q
В созданной административной точке будут два варианта 64-разрядных cl/link/e.t.c: x86-64 (или x86-amd64, уже не помню) - для 32-разрядного хоста сборки, amd64 - для 64-разрядного.
Ну и в inlude/lib примерно также.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438307
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я взял дистрибутив VS2005-Professional.
(экспериментирую на ноуте с Win 10, где у меня стоит такая же VC++ 2005 Express Edition "8.0.50727.762")
Установил из VS2005-Professional единственный компонент: Visual C++ -> X64 Compilers and Tools
Чего-то он мне в папку C:\Program Files (x86)\Microsoft Visual Studio 8 доложил (типа подпапки amd64 местами).
Express студию не сломал (версия и регистрация сохранились), но при выборе <New> в конфигурациях x64 так и не появилась.
Саму Professional C++ IDE я так понял он не установил, т.к. галку ставил только "X64 Compilers and Tools".
И как это лечить? Я хочу чтоб у меня появилось x64 в экспрессе.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438321
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set vc=D:\Program Files (x86)\Microsoft Visual Studio 8\VC

set INCLUDE=%vc%\INCLUDE;%vc%\PlatformSDK\include;
set LIB=%vc%\LIB\amd64;%vc%\PlatformSDK\lib\amd64;
set Path=%vc%\BIN\amd64;%vc%\PlatformSDK\bin\win64\amd64;

del test.obj test.dll
cl /MT /LD /O2 /W4 /GS- /c test.cpp  
link /DLL test.obj  kernel32.lib user32.lib 
dumpbin /dependents test.dll 



как-то без всяких IDE и экспресс-бубнов работает
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438331
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Я пока что сдуру запустил IDE от 2005 Professional, оно мне чего-то нагадило ("идет подготовка к первому запуску"),
что теперь 32-битная компиляция на Express 9 ошибок лепит. "Лечить" это смысла нет, потому что сборка после лечения скорее всего будет "дефективная". Сижу откатываю ноут к исходной точке (и надеюсь отката хватит), хорошо это не основной рабочий комп.

То что ты написал. Это что?
Куда мне надо смотреть в правильном 32-битном проекте (сделанном в Express студии), чтоб родить подобие того что ты написал для 64-битного? Только для своего проекта. Студия (IDE) где-то же эту хрень пишет.
То что я доустановил Visual C++ -> X64 Compilers and Tools из полного пакета, это видимо правильно а вот IDE от него трогать видимо было не надо.

Хотя я честно был бы счастлив если б это можно было все воткнуть в IDE Express-а.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438387
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Хотя я честно был бы счастлив если б это можно было все воткнуть в IDE Express-а
это для хелловорда, а твои задачи несколько выходят из этого класса приложений

разрабатывать можно в одной среде,
а собирать для деплоя - в другой(и не обязательно визуальной)

нормально сделанный make файл позволяет одним движением собрать и 32 и 64 битные версии,
не говоря о прочих вкусностях
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438393
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче черт с ними с make-ами,
поигравшись на ноуте, сделал на рабочем компе так:
1) Резервируем C:\Program Files (x86)\Microsoft Visual Studio 8\VC (от корректно рабочего Express 2005)
2) Устанавливаем VS2005Full -только один компонент "x64 Compilers and Tools"
3) Запускаем IDE VS2005Full (оно установится) "C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\devenv.exe". Отказываемся от предложения установить "Update for Vista" и снимаем галку про напоминания оного (автообновления для "остальных" продуктов MS на Win10 должны быть тоже навсегда отключены), даем ей поиграть в "первый запуск".
4) Сохраненное в п.1 накатываем копированием поверх того что установила VS2005Full.
5) Запускаем Express и убеждаемся, что ничего не сломалось, т.е. что компилировалось - компилируется без ошибок и нужной сборки.
6) Запускаем Full и конфигурируем Tools -> Options -> Projects and Solutions -> VC++ Directories (Win32) -> Executible/Include/Library также как в экспрессе -это даст возможность делать 32-битник одинаково и в экспрессе и в Full.
7) По образу и подобию конфигурируем в Full: Tools -> Options -> Projects and Solutions -> VC++ Directories (x64) -> Executible/Include/Library
Мне хватило добавить сверху:
C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\x64
C:\Program Files\Microsoft SDKs\Windows\v6.1\Include
C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib\x64
(то что нужно для моей dll )
8) Ну и добавляем/делаем x64 конфигурацию (в Full IDE с учетом п.2 оно без проблем доступно)

Т.е. файл Win32 могу делать в EE либо в Full (я их запараллелил), x64 тоже в Full.

Проверил
Win32: на XP,2003,Win7
x64: на Vista,8.1,2012R2 и на голой Win10 (не той где установлены студии).
Везде все работает без проблем.

Смущают 2 вещи.
1) Дистрибутив 2005Full походу как бы это сказать (оригинальных то на MS не дают) качал с "Get into PC", думал что TRIAl-оригинал качаю серийник типа подставился сразу и написал Licensed. Оно конечно хорошо с одной стороны, но с другой я предпочту Express или на худой конец VL с активацией на MS. Стоит за это переживать (с точки зрения что это не "слетит" и не содержит какой-нибудь дряни)? Сорри если это нарушает то о чем здесь нельзя писать, не нарочно получилось, хорошо хоть это нашел.

2) Манифест намекающий на рантаймы для x64 несколько отличается:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>


Т.е. там указано кроме хорошей сборки ="8.0.50727.762" еще и вторая version="8.0.50608.0"
Это почему? И как к этому относиться? Но вроде хуже не становится. (плохо то что после 50727)
Надо ли это пытаться допиливать?

P.S. Я рантаймы из Full не устанавливал, т.е. оно очевидно поставилось на то что было с Express, а x64 в Express не было.


Ну и конечно обидно что современная VS2013 (а ить привык уже в ей сидеть) не способна родить нормальную сборку и приходится откатывать проект спасибо что хоть не в 6-ю студию.

ИзопропилДмитрий77Хотя я честно был бы счастлив если б это можно было все воткнуть в IDE Express-а
это для хелловорда, а твои задачи несколько выходят из этого класса приложений

разрабатывать можно в одной среде,
а собирать для деплоя - в другой(и не обязательно визуальной)

нормально сделанный make файл позволяет одним движением собрать и 32 и 64 битные версии,
не говоря о прочих вкусностях
Ток счас прочитал твой ответ. Да не охота чесно в эти make-и врубаться.
Я с такими dll вожусь нечасто.
Вот я эту фишку насчет универсальности "50727" просек лет 8 тому назад и очень успешно до сих пор это использую.
Хотя в ориг. примере из sdk кстати make готовый имеется под Win32, счас обратил внимание.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438397
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Я пока что сдуру запустил IDE от 2005 Professional, оно мне чего-то нагадило ("идет подготовка к первому запуску"),
что теперь 32-битная компиляция на Express 9 ошибок лепит. "Лечить" это смысла нет, потому что сборка после лечения скорее всего будет "дефективная". Сижу откатываю ноут к исходной точке (и надеюсь отката хватит), хорошо это не основной рабочий комп.
Делай это в виртуалке. Например в VirtualBox

Делаешь снимок, ставишь/сносишь все что угодно, не понравилось - откат к снимку пара кликов.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438400
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Да не, с этим разобрался уже, см. предыдущий пост. (тем более у меня есть резерв "правильной VC папки" и "правильной ветки реестра") Все хорошо уже, и на ноуте и на рабочем компе.
Смущает только довесок version="8.0.50608.0" в 64-битном манифесте.
Я вот думаю или так надо, или наплевать, или еще экспериментировать.
version="8.0.50727.762" -она очень тщательно подбиралась, начиная с одного прекрасного дня, когда после какого-то обновления файлы на соседнем XP (таком же но без студии) вдруг перестали запускаться. Давно это было.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438422
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Смущает только довесок version="8.0.50608.0" в 64-битном манифесте.
Я вот думаю или так надо, или наплевать, или еще экспериментировать.
собери со статическим рантаймом и не будет этой зависимости.

и нехер ничего тщательно подбирать.

старый рантайм практически всегда в системе болтается. тебе просто не свезло - подвернулась неотсервиспачtная нетронутая установкой стороннего софта XP винда.


PS
Сколько можно жрать кактус - или статически линкуйся или в инсталлятор включай рантайм с которым собирался.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438437
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
кактусы я разные жру, как правило успешно, зато потом годами стабильное приложение на выходе.

Я уж кажется понял откуда там ="8.0.50608.0" в 64-битном манифесте.
8.0.50727.762 -это 2005 SP1
а у меня в "эталоне" установлен SP1 для Express, соответственно x64 он как должно не затрагивает.
Счас попробую накатать нужный SP1, на ноуте для начала.

>старый рантайм практически всегда в системе болтается. тебе просто не свезло - подвернулась неотсервиспачtная нетронутая установкой стороннего софта XP винда.
мне не свезло со статическим рантаймом от VS2013, причем не на XP, а на 2003. И не свезло так, что возникли сомнения в адекватности этого самого vc120 (и redistr. что интересно не помог!!!).
лучше уж помудохаться с 2005-й.
8.0.50727.762 -этот рантайм очевидно идет с .Net 2.0 SP1 и всеми OS начиная с Висты - и да, получается я его и так "таскаю с инсталлятором" (для XP/2003, а на новых он и так есть по дефолту). 8.0.50608.0 - скорее всего тоже идет, но лучше уж подогнать под 50727 в чем уверен. Это знаешь грызня кактуса пару дней, зато спокойствие на годы вперед.
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438451
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

я тебе о статической линковке с использованием VC8(2005).
и мудохаться не надо.

а высвободившееся время лучше потратить на изучение инструментов сборки
...
Рейтинг: 0 / 0
Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
    #39438467
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

ну я понял.
Но у меня кстати все получилось уже. Накатал правильный SP1 поверх. EE не испортил.
А вот x64 в full скорректировался к каноническому виду.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>


P.S. А вот в .Net не надо с рантаймами бодаться когда API декларируешь.
Но надо бодаться с версиями .Net.
Дурдом(С)
PPS. А вот в VB6, гы, ни с тем ни с другим бодаться не надо было.
...
Рейтинг: 0 / 0
68 сообщений из 68, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]