powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
18 сообщений из 68, страница 3 из 3
Проект 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
18 сообщений из 68, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проект dll(надо и 32 и 64 бит версии) в VS2013 Ultimate C++ -чтоб от XP до Win10
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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