【问题标题】:Unsuccessfully linking OpenCV libs in CodeBlocks?在 CodeBlocks 中链接 OpenCV 库失败?
【发布时间】: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。

标签: c++ opencv dll codeblocks


【解决方案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 是一个目录,我在其中制作您在帖子中编写的所有库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多