在 CodeBlocks 中链接 OpenCV 库失败?
Posted
技术标签:
【中文标题】在 CodeBlocks 中链接 OpenCV 库失败?【英文标题】:Unsuccessfully linking OpenCV libs in CodeBlocks? 【发布时间】:2014-12-22 18:22:30 【问题描述】:问题在于 OpenCV 尚未正确设置以运行简单的“Hello World”类型的程序。
正在运行:Windows 8,64 位
IDE:代码块 13.12
OpenCV:2.4.10
采取的措施
已下载 OpenCV 二进制文件是使用 CMake 构建的(遵循本教程的基本步骤: http://kevinhughes.ca/tutorials/opencv-install-on-windows-with-codeblocks-and-mingw/) 将环境变量的 PATH 设置为
C:\opencv\build\x64\mingw\bin;C:\MinGW\bin
将链接库设置为 C:\opencv\build\x64\mingw\lib
中包含的所有库* 注意 * 文件的类型是 .dll.a
而不是 .dll
将搜索目录编译器设置为C:\opencv\build\include
将搜索目录链接器设置为C:\opencv\build\x86\mingw\lib
从 OpenCV 教程复制代码以测试正确的配置
'
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
Mat image;// new blank image
image = cv::imread("test.png", 0);// read the file
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.
imshow( "Display window", image );// show our image inside it.
waitKey(0);// wait for a keystroke in the window
return 0;
'
建成并运行
出现以下系统错误
程序无法启动,因为缺少 libopencv_core2410.dll 你的电脑。尝试重新安装程序以解决此问题。
配置有什么问题?
【问题讨论】:
将DLL复制到你的exe所在的目录。 在 MinGW 目录中找到 «libopencv_core2410.dll» 文件的位置,然后将路径添加到 $PATH,或者在项目中添加链接路径。 @sashoalm,糟糕的主意。完全击败“共享库” @berak 好吧,这就是 Windows 上的一种方式。你真的认为任何人都会希望 DLL 恰好在客户端的机器上吗?每个程序都只是将 DLL 放在 exe 的目录中,去C:\Program Files
看看。这不是 UNIX。
【参考方案1】:
Code::Blocks 的配置没问题,因为你设法构建并运行了。
DLL 目录需要在 PATH 中,否则 DLL 需要与可执行文件在同一目录中。
你可以把它复制到那里,但我会把它添加到 PATH 变量中。
命令sysdm.cpl
运行系统小程序。在“高级”选项卡中,按下底部的“环境变量...”按钮。在用户环境默认值中添加或编辑 PATH。
重启代码::Blocks。
【讨论】:
DLL ("C:\opencv\build\x86\mingw\bin\libopencv_core2410.dll") 被添加到 PATH 变量中并且 Code::Blocks 重新启动。然而,同样的系统错误再次出现。 DLL 是否被错误地添加到 PATH? 不,不要添加 DLL 文件本身。添加它所在的目录。但看起来你已经拥有了。这很令人困惑。您收到的消息来自 Windows 加载程序。检查您是否确实拥有该文件,libopencv_core2410.dll
。
是的,该文件存在并且在 C:\opencv\build\x86\mingw\bin 中。我应该把它移到可执行文件的目录吗?
@Zephyr:是的,我会尝试(复制,而不是移动)。但从长远来看,你需要找出这里到底发生了什么。使用 PATH 中的包含目录,应该已经找到它。请注意,如果不清楚,更改 PATH 默认值不会更改任何给定进程(例如命令解释器实例)中的 PATH 值。这就是我写“restart Code::Blocks”的原因,而且,如果你从命令解释器运行程序,请重新启动它。
谢谢,从 C:opencv\build\x86\mingw\bin 复制所有 DLL 消除了系统错误。但是,正在发生另一个错误(可能不相关):在 libopencv_core2410.dll 中找不到入口点【参考方案2】:
只需在路径变量中设置 DLL 文件,例如 C:\opencv\my_build\install\x64\mingw\lib\libopencv_core2411.dll.a 这里 my_build 是一个目录,我在其中制作您在帖子中编写的所有库。
【讨论】:
以上是关于在 CodeBlocks 中链接 OpenCV 库失败?的主要内容,如果未能解决你的问题,请参考以下文章
在 windows(W32) 上安装 opencv 以与代码块一起使用