Ошибка при запуске VC 2012 Release Build

Я собираю чистую программу Win32 (без clr или какой-либо сборки) к VC 2012 (VC 2012 (VC11) в качестве моего компилятора). Он использует boost 1.58, серию wxWidget 3.0.2, gsl 1.8, jsoncpp, Open CV 2.4.10 и т. Д. На стадии разработки работает Win7 64bit. Я хотел бы, чтобы он был одним исполняемым файлом и мог запускаться на обоих Win 7 32/64, поэтому я собрал все вышеперечисленные пакеты как libs для того же VC 2012. (спасибо за cmake) …

Он отлично работает на блоке разработки, но не на чистом, который только устанавливал пакеты распространения VC. Я получил сообщение об ошибке, попросите меня использовать sxstrace, и сообщение в журнале событий имеет параллельную ошибку, как показано ниже, и я также попробовал sxstrace и получил похожую ошибку.

«D: \ Release \ xxxx.exe» Microsoft.VC90.DebugCRT, processorArchitecture = «x86», publicKeyToken = «1fc8b3b9a1e18e3b», type = «win32», version = «9.0. 21022,8 «x 請 使用 sxstrace.exe 進行 詳細 的 診斷。

Я искал вокруг. Все и ответы просто говорит, что я должен использовать все версии сборки для всех библиотек. Да, это правда, если бы я не смог, я бы не смог получить единственный исполняемый файл. Он не сможет связать. (Я узнал об этом, допустив много ошибок) Я попробовал обе сборки MD или MT для своей программы (не смешивать их вместе. Это отдельный тест). Любой из режимов работает. Та же ошибка остается. Я также установил более много VC2008 9.0.21022, -30729.17, -30729.4148, -30729.6161, VC 2010 10.0.40219, VC 2012 11.0.61030 (x86 / x64)

Я действительно не понимаю. Это чистая версия win32, созданная VC 2012. Почему это требует отладочной библиотеки VC90?

Я буду очень признателен, если кто-то может дать мне более точный совет о том, как решить или даже определить, где и что пойдет не так с кодом или библиотекой, которую я создаю.

0

Решение

Я предлагаю вам использовать следующий инструмент: Ходок зависимости.

Загружая свой исполняемый файл на свой ПК (там, где он работает), вы должны выяснить все библиотеки DLL, которые он использует, и обнаружить любые скрытые зависимости в списке (среднего размера) библиотеки, от которого зависит ваш проект (и, в свою очередь, их зависимости).

Это должно помочь вам указать библиотеки DLL, которые есть на вашем компьютере, но не на недавно установленных компьютерах.

2

Другие решения

Чистая сборка релиза Win32 не должна зависеть от DLL-файлов DEBUG CRT, это точно. Единственный параметр проекта для управления, который в основном является настройкой MT / MD («Библиотека времени выполнения»). Вы хотите MT.

Я предполагаю, что у вас есть DLL Debug CRT, на которую есть ссылка где-то в исходном коде (например, одна из библиотек требует, чтобы он был связан по какой-либо причине, может быть, потому что есть #define DEBUG или что-то, таким образом, переопределяя настройки проекта.

Вы можете попробовать поискать #pragma comment(lib, ...bla-bla-bla...) в исходном коде.

0

Это решено мной. Проект о переносе большого унаследованного проекта. Так что VC90 построил очень маленькую библиотеку без исходного кода. Так что быть подробным человеком — ключ к выполнению такой работы.

0
По вопросам рекламы [email protected]