Я работаю над проектом чуть больше года. С тех пор, как я начал проект, он впервые работал над VS2008. Использование MFC было установлено на Shared Library. Я получил проект и, поскольку у меня не было VS2008, я обновил проект до V100. Когда я передал драйвер клиенту, он вернулся ко мне и сказал, что новая библиотека не работает, пока не установит среду выполнения C ++ 2010. Сначала я был озадачен, но потом подумал, что это потому, что для MFC было установлено Shared. Я сказал им, что это необходимо, и они были в порядке с этим. Я никогда не понимал причину этого, но просто пошел с этим. Ну что ж, вперед несколько месяцев, и вышел VS2012, и я запрыгнул на этот универсал. Он отображает код C ++ (на мой взгляд) гораздо лучше. Теперь в какой-то момент я играл с настройками и изменил набор символов на Unicode (с none) и MFC в статической библиотеке. Это привело к небольшому увеличению размера DLL, что, как я думал, решило проблему необходимости установки VC100crt. Поэтому, когда я обновил, я также обновил набор инструментов платформы до V110. Построил его и хотел, чтобы человек протестировал его в своей системе, прежде чем я выпустил его. Он выстрелил в ответ, сказав, что это не будет зарегистрировано, и его программа не распознала это. Поэтому я перекомпилировал с использованием V100, и у него это сработало.
Так чего мне не хватает? Почему это требует, чтобы V100crt был установлен для регистрации моей DLL. Также загружается другая подобная библиотека (не знаю, какие есть параметры компиляции), но, похоже, ей не нужны какие-либо установленные CRT … мысли?
РЕДАКТИРОВАТЬ
Параметры компиляции C ++
/Yu"StdAfx.h"/GS
/analyze-
/W3
/Zc:wchar_t
/Zi
/Gm-
/Od
/Fd"Debug\vc100.pdb"/fp:precise
/D "WIN32"/D "_WINDOWS"/D "_DEBUG"/D "_USRDLL"/D "_WINDLL"/D "_UNICODE"/D "UNICODE"/errorReport:prompt
/WX-
/Zc:forScope
/Gd
/Oy-
/MTd
/Fa"Debug\"/EHsc
/nologo
/Fo"Debug\"/Fp"Debug\MyLibrary.pch"
вау, это длинный автоматически генерируемый список: / тьфу .. вот компоновщик. Хотелось бы, чтобы я понял это лучше.
Параметры компоновщика
/OUT:"C:\Subversion\MyLibrary\Debug\MyLibrary.dll"/MANIFEST
/NXCOMPAT
/PDB:"C:\Subversion\MyLibrary\Debug\MyLibrary.pdb"/DYNAMICBASE
/ALLOWISOLATION
/DEF:".\MyLibrary.def"/DEBUG
/DLL
/MACHINE:X86
/INCREMENTAL
/PGD:"C:\Subversion\MyLibrary\Debug\MyLibrary.pgd"/SUBSYSTEM:WINDOWS
/MANIFESTUAC:"level='asInvoker'
uiAccess='false'"/ManifestFile:"Debug\MyLibrary.dll.intermediate.manifest"/ERRORREPORT:PROMPT
/NOLOGO
/TLBID:1
Параметры конфигурации
Генеральный:
Target Extension: .dll
Platform Toolset: Visual Studio 2012 (v110)
Проект по умолчанию:
Configuration Type: Dynamic Library (.dll)
Use of MFC: Use MFC in a Static Library
Use of ATL: Not using ATL
Character Set: Use Unicode Character Set
Common Language Runtime Support: No Common Language Runtime Support
Whole Program Optimization: No Whole Program Optimization
Windows Store App Support: No
Я также нашел где-то, чтобы не вставлять мой манифест. Так что я изменил это на Нет.
Задача ещё не решена.
Других решений пока нет …