2012-02-23 1 views
0

Компьютер: Windows 7 x64 бит, Visual Studio 2008Приложение не может Начало: OpenCV x64 компиляции в VS использует библиотеки x86

Скачал последний OpenCV сборки (2.3.3) из SVN и составлено по этим инструкциям (HTTP: //opencv.itseez.com/doc/tutorials/introduction/windows_install/windows_install.html#windows-installation) с соответствующими подстановками x86/x64.

Все скомпилировано в то, что я хотел (как и в случае с прекомпилированной версией, к которой я привык), но всякий раз, когда я запускаю какие-либо мои собственные программы или любые образцы, включенные в каталог/bin, я получаю следующее сообщение об ошибке:

The application was unable to start correctly (0xc000007b). Click OK to close the application

Я скачал Dependency Walker и обнаружил следующие ошибки зависимостей:

  • MSVCP90.dll x86 (красный)
  • msvcr90.dll x86 (красный)
  • TBB.dll x86 (красный)
  • ieshims.dll (отсутствует)

Я не связывая правильные слова DLLs размера на компиляции. Первые два выглядят как время исполнения Visual Studio 9.0, и последнее, что я слышу, это DLL Internet Explorer. Я уже установил распространяемый VS2008 x64 (нужно ли перекомпилировать все?), Но он все равно не работает.

Я искал интернет и нашел, что это общая проблема, но на самом деле нет общего решения. Для меня это происходит как с отладкой, так и с выпуском.

Любые идеи? Спасибо.

+0

Это происходит, когда 32-разрядная программа находит 64-разрядную DLL. Или наоборот. Dumpbin.exe/headers - основной инструмент устранения неполадок, посмотрите на «машину». –

+0

Да, я компилирую 64-битную программу, и вышеупомянутые DLL 32-разрядные, то есть несовместимые, но вопрос в том, как я: а) найти правильные DLL (не должны они быть в наборе rediant pack VS2008) и b) получить мою программу для компиляции с правильными связанными. – Jason

ответ

2

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

Если бы я знал достаточно о cmake, чтобы переписать его, чтобы он мог направить программу на правильные.