Visual Studios 2010程序无法启动,因为缺少opencv_core243.dll文件。

4
我正在学习如何使用OpenCV,为了练习我运行了一个程序(在Release模式下,x64)。编译器没有报错,但弹出了一个屏幕提示:

"the program can't start because opencv_core243.dll is missing"

然而,我确保声明了正确的环境变量并指定了必要的库和目录。当我将以下.dll文件复制到x64 / Release中时,问题得以解决:
  • opencv_core243.dll
  • opencv_highgui243.dll
  • opencv_imgproc243.dll
现在我的程序可以正常编译并且工作。然而,我想知道为什么会这样。直接复制和粘贴这些.dll文件感觉不太好。我有没有错过自动生成这些.dll文件的步骤?

它找不到dll文件。将它们复制到发布目录中解决了这个问题。看一下这个链接。http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.71).aspx - Tony Hopkinson
1个回答

4
这个问题的实际解决方案是将opencv bin目录的路径追加到系统PATH环境变量中。
查看这个答案,描述了在Visual Studio 2010中安装OpenCV的完整过程。
这种方法有一个缺点。预编译的OpenCV x86和x64二进制文件具有相同的名称。因此,通过将OpenCV的路径追加到PATH变量中,您可以同时执行32位版本或64位版本。要运行另一个版本,您必须更改PATH变量。
这种方法的替代方法(我个人最喜欢的方法)也涉及将dll复制到输出目录,但这是在编译结束时自动完成的。我所做的是为x86和x64 dll路径创建新的环境变量。我创建了用户变量CV_BIN32CV_BIN64,分别包含x86和x64 dll的路径。
创建用户变量后,打开OpenCV项目,转到项目属性->生成事件->后期生成事件->命令行
添加您需要在运行时使用的dll的复制命令。
这是Win32 Release配置的命令:
copy "$(CV_BIN32)\opencv_core243.dll" "$(OutDir)"
copy "$(CV_BIN32)\opencv_highgui243.dll" "$(OutDir)"

您可以更改所有4个配置(Debug/Release, Win32/x64)的设置。

现在,当项目构建过程完成时,指定的dll文件将自动复制到输出目录,错误将不会显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接