Сборка приложений QT в VS 2008 не работает в XP - PullRequest
1 голос
/ 16 марта 2011

Привет всем! Я создал приложение в VS 2008, используя плагин QT, и он отлично работает во всех системах Windows. Но когда я пытаюсь запустить то же самое приложение в XP, оно показывает ошибку :: Точка входа в процедуру xxx не может быть расположена в xxx.dll.

Как я могу решить эту проблему. enter image description here

1 Ответ

1 голос
/ 16 марта 2011

Я думаю, вам нужно установить среду выполнения VS 2008 в системе XP.Вы можете сделать это несколькими способами, включая:

  • http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
  • установщик, который поставляется с VS 2008 (C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86\vcredist_x86.exe)
  • , включающий пакет MSM длясреда выполнения в установщике MSI
  • может работать для копирования библиотек DLL из C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT в тот же каталог, что и ваш исполняемый файл.

Обновление:

Ваша программаКажется, возникла проблема с разрешением ссылки, которая ищется в msvcrt.dll - системной DLL, которая не является частью среды выполнения VS 2008 (msvcrt90.dll).Я протестировал некоторые демонстрации Qt в VS 2008 с помощью надстройки Qt, и я не вижу их прямой ссылки на msvcrt.dll (как я ожидаю, программы ссылаются на msvcr90.dll).

Однако,когда я смотрю на программы, использующие Dependency Walker (http://www.dependencywalker.com/),, я вижу, что msvcrt.dll извлекается - результат соединения с advapi32.dll (в моей системе WinXP ссылка на msvcrt.dll является косвенной, хотя netapi32.dllКопия msvcrt.dll в моей системе WinXP SP3 не имеет экспорта для wcscpy_s, в то время как копия на Win7 делает. Но ничто, использующее msvcrt.dll на WinXP, не пытается импортировать wcscpy_s, так что нет проблем, чтоон не экспортируется.

Я предлагаю вам использовать что-то вроде Dependency Walker (http://www.dependencywalker.com/), чтобы выяснить, что пытается вытянуть пропавший символ wcscpy_s из msvcrt.dll. Я думаю, что у вас есть хорошие шансыDLL, которая не принадлежит WinXP или должна быть перестроена для совместимости с XP.

...