Сбой DLL VC ++ ATL - возможно связанный с 32/64-битной проблемой - PullRequest
0 голосов
/ 05 декабря 2011

У меня проблема с созданной мной 32-битной библиотекой ATL - всякий раз, когда я использую библиотеку DLL на компьютере с Windows XP (32-битной), она вылетает без каких-либо предупреждений. Я думаю, что проблема связана с версией Windows, на которой я скомпилировал dll, но я не уверен. Немного истории:

Первоначально я разработал dll на Windows XP (32-разрядная версия) с Visual Studio 2008. Эта версия dll прекрасно работала на Windows XP (32-разрядная версия) и Windows 7 (32-разрядная и 64-разрядная версия). , Затем я получил новый комплект для разработки с Windows 7 (64-разрядной) и Visual Studio 2010. Я преобразовал свой проект VS2008 в VS2010, скомпилировал его, и он отлично работает на машинах с Windows 7 (32-разрядной и 64-разрядной); однако, когда я запускаю его на Windows XP (32-разрядная версия), происходит сбой.

Самое смешное, что я смог успешно выполнить regsv32 dll на компьютере с XP, но когда я запустил средство обхода зависимостей, он сказал, что ему не хватает набора файлов:

api-ms-win-core-console-l1-1-0.dll<br /> api-ms-win-core-datetime-l1-1-0.dll<br /> api-ms-win-core-debug-l1-1-0.dll<br /> api-ms-win-core-delayload-l1-1-0.dll<br /> api-ms-win-core-errorhandling-l1-1-0.dll<br /> api-ms-win-core-fibers-l1-1-0.dll<br /> api-ms-win-core-file-l1-1-0.dll<br /> api-ms-win-core-handle-l1-1-0.dll<br /> api-ms-win-core-heap-l1-1-0.dll<br /> api-ms-win-core-interlocked-l1-1-0.dll<br /> api-ms-win-core-io-l1-1-0.dll<br /> api-ms-win-core-libraryloader-l1-1-0.dll<br /> ...any many more of the same

Я скопировал все эти файлы со своего компьютера для разработки на компьютер с Windows XP, и теперь обходчик зависимостей говорит мне:

Error: The Side-by-Side configuration information for "c:\documents and settings\poibri01\desktop\distributable\WERUI.DLL" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).<br /> Error: Modules with different CPU types were found.<br /> Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Я не знаю, куда идти отсюда. Кто-нибудь может мне помочь?

Редактировать

  1. Распространяемый пакет Microsoft Visual C ++ 2010 (x86) установлен на компьютере с Windows XP.
  2. Я собираю DLL как 32-разрядную версию (не Debug).

1 Ответ

1 голос
/ 05 декабря 2011

Я думаю, что эти dll специфичны для Windows 7 , поэтому они не будут работать на XP. Я подозреваю, что либо у вас есть что-то в файле манифеста, специфичное для Windows 7, либо вы указываете минимальную версию в _WIN32_WINNT или WINVER, например, см. http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx

Чтобы увидеть, что находится в файле манифеста, используйте инструмент mt :

mt -inputresource:mydll.dll;#1 -out extracted.manifest
...