我正在学习如何使用OpenCV,并且在实践中我运行了一个程序(在发布模式下,x64)。我有0个编译器错误,但有一个弹出屏幕说:
“程序无法启动,因为缺少opencv_core243.dll”
但是,我确保我声明了正确的环境变量并指定了必要的库/目录。当我将以下.dll文件复制到x64 / Release:
时,我的问题得到解决我的程序现在编译好并且有效。但是,我想知道为什么。复制和粘贴这些.dll文件感觉很便宜。我是否错过了自动生成这些.dll文件的步骤?
答案 0 :(得分:4)
此问题的实际解决方案是将opencv bin目录的路径附加到System PATH
环境变量。
查看this answer,了解在Visual Studio 2010中安装OpenCV的完整过程。
这种方法有一个缺点。预构建的OpenCV x86和x64二进制文件具有相同的名称。因此,通过将OpenCV的路径附加到PATH
变量,您可以一次执行32位版本或64位版本。要运行其他版本,您必须更改PATH
变量。
另一种选择(我个人最喜欢的)还涉及将dll复制到输出目录,但这是在编译结束时自动完成的。我所做的是为x86和x64 dll路径创建新的环境变量。我创建了分别包含x86和x64 dll路径的用户变量CV_BIN32
和CV_BIN64
。
创建用户变量后,打开OpenCV项目,转到Project Properties
- > Build Events
- > Post-Build Event
- > Command Line
。
为运行时所需的dll添加复制命令。
这个适用于Win32发布配置:
copy "$(CV_BIN32)\opencv_core243.dll" "$(OutDir)"
copy "$(CV_BIN32)\opencv_highgui243.dll" "$(OutDir)"
您可以为所有4种配置更改它们,(调试/发布),(Win32 / x64)
现在,当项目构建过程完成时,指定的dll将自动复制到输出目录,并且不会显示错误。