Visual studio 2008 应用程序无法启动:VS中的OpenCV x64编译使用x86库

Visual studio 2008 应用程序无法启动:VS中的OpenCV x64编译使用x86库,visual-studio-2008,dll,opencv,64-bit,windows-7-x64,Visual Studio 2008,Dll,Opencv,64 Bit,Windows 7 X64,计算机:Windows 7 x64位,Visual Studio 2008 从SVN下载最新的OpenCV构建(2.3.3),并按照以下说明进行编译(http://opencv.itseez.com/doc/tutorials/introduction/windows_install/windows_install.html#windows-安装)使用适当的x86/x64替换件 除了(就像我以前使用的预编译版本一样)之外,所有的东西都编译得很好,但是每当我运行我自己的任何程序或/bin目录中包含

计算机:Windows 7 x64位,Visual Studio 2008

从SVN下载最新的OpenCV构建(2.3.3),并按照以下说明进行编译(http://opencv.itseez.com/doc/tutorials/introduction/windows_install/windows_install.html#windows-安装)使用适当的x86/x64替换件

除了(就像我以前使用的预编译版本一样)之外,所有的东西都编译得很好,但是每当我运行我自己的任何程序或/bin目录中包含的任何示例时,我都会遇到以下错误:

应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序

因此,我下载了Dependency walker并发现以下依赖项错误:

  • MSVCP90.dll x86(红色)
  • MSVCR90.dll x86(红色)
  • TBB.dll x86(红色)
  • IESHIMS.dll(缺少)
我没有在编译时链接正确的字号DLL。前两个看起来像Visual Studio 9.0运行时,最后一个是Internet Explorer dll。我已经安装了VS2008 x64可再发行版(是否需要重新编译所有内容?),但它仍然无法工作

我在互联网上搜索过,发现这是一个常见的问题,但实际上并没有一个通用的解决方案。对我来说,调试和发布都会发生这种情况


有什么想法吗?非常感谢。

我解决了这个问题。cmake在生成我的解决方案时链接的TBB DLL是32位二进制文件。我从解决方案中删除了TBB,现在我可以运行OpenCV应用程序了


如果我对cmake有足够的了解,可以重写它,这样它就可以将程序指向正确的程序。

当32位程序找到64位DLL时,就会发生这种情况。或者反过来说。Dumpbin.exe/headers是基本的疑难解答,看看“machine”。是的,我正在编译一个64位程序,前面提到的DLL是32位的,即不兼容,但问题是如何找到正确的DLL(它们不应该在VS2008 redist包中)和b)让我的程序用正确的链接编译。