Я собираю чистую программу 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?
Я буду очень признателен, если кто-то может дать мне более точный совет о том, как решить или даже определить, где и что пойдет не так с кодом или библиотекой, которую я создаю.
Я предлагаю вам использовать следующий инструмент: Ходок зависимости.
Загружая свой исполняемый файл на свой ПК (там, где он работает), вы должны выяснить все библиотеки DLL, которые он использует, и обнаружить любые скрытые зависимости в списке (среднего размера) библиотеки, от которого зависит ваш проект (и, в свою очередь, их зависимости).
Это должно помочь вам указать библиотеки DLL, которые есть на вашем компьютере, но не на недавно установленных компьютерах.
Чистая сборка релиза Win32 не должна зависеть от DLL-файлов DEBUG CRT, это точно. Единственный параметр проекта для управления, который в основном является настройкой MT / MD («Библиотека времени выполнения»). Вы хотите MT.
Я предполагаю, что у вас есть DLL Debug CRT, на которую есть ссылка где-то в исходном коде (например, одна из библиотек требует, чтобы он был связан по какой-либо причине, может быть, потому что есть #define DEBUG
или что-то, таким образом, переопределяя настройки проекта.
Вы можете попробовать поискать #pragma comment(lib, ...bla-bla-bla...)
в исходном коде.
Это решено мной. Проект о переносе большого унаследованного проекта. Так что VC90 построил очень маленькую библиотеку без исходного кода. Так что быть подробным человеком — ключ к выполнению такой работы.