Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在代码块中链接OpenCV库失败?_C++_Opencv_Dll_Codeblocks - Fatal编程技术网

C++ 在代码块中链接OpenCV库失败?

C++ 在代码块中链接OpenCV库失败?,c++,opencv,dll,codeblocks,C++,Opencv,Dll,Codeblocks,问题是OpenCV没有正确设置以运行简单的“Hello World”类型的程序 正在运行:Windows 8,64位 IDE:代码块13.12 OpenCV:2.4.10 采取的行动 下载的OpenCV 二进制文件是使用CMake构建的(遵循本教程的基本步骤: ) 将环境变量的路径设置为C:\opencv\build\x64\mingw\bin;C:\MinGW\bin 将链接库设置为C:\opencv\build\x64\mingw\lib *注意*文件的类型是.dll.a而不是.dll

问题是OpenCV没有正确设置以运行简单的“Hello World”类型的程序

正在运行:Windows 8,64位

IDE:代码块13.12

OpenCV:2.4.10

采取的行动
  • 下载的OpenCV
  • 二进制文件是使用CMake构建的(遵循本教程的基本步骤: )
  • 将环境变量的路径设置为
    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教程中的代码以测试正确的配置
"

#包括
#包括
使用名称空间cv;
int main()
{
Mat image;//新的空白图像
image=cv::imread(“test.png”,0);//读取文件
namedWindow(“显示窗口”,CV_window_AUTOSIZE);//创建一个显示窗口。
imshow(“显示窗口”,图像);//在其中显示我们的图像。
waitKey(0);//在窗口中等待击键
返回0;
}'
  • 建造并运行
  • 出现以下系统错误
程序无法启动,因为中缺少libopencv_core2410.dll 你的电脑。请尝试重新安装程序以解决此问题


配置有什么问题?

代码::块的配置没有问题,因为您已成功构建并运行了代码::块

DLL目录必须位于路径中,否则DLL必须与可执行文件位于同一目录中

您可以将其复制到那里,但我会将其添加到PATH变量中

命令sysdm.cpl运行系统小程序。在高级选项卡中,按底部的“环境变量…”按钮。在用户环境默认值中添加或编辑路径


重新启动代码::块。

只需在path变量中设置DLL文件,如 C:\opencv\my\u build\install\x64\mingw\lib\libopencv\u core2411.dll.a
这里的“我的构建”是一个目录,当您在post中写入时,我会在其中创建所有库。

将dll复制到exe所在的目录中。使用«libopencv\u core2410.dll»文件查找目录中的何处,或者将路径添加到$path,或者将项目添加到链接路径。@sashoalm,糟糕的主意。完全击败了“共享库”@berak嗯,这是Windows上的一种方式。你真的认为有人会希望DLL恰好在客户机上吗?每个程序都只是将DLL放在exe的目录中,请查看
C:\ProgramFiles
。这不是UNIX。DLL(“C:\opencv\build\x86\mingw\bin\libopencv\u core2410.DLL”)已添加到PATH变量,并且代码::Blocks已重新启动。然而,同样的系统错误再次出现。DLL是否被错误地添加到路径中?不,不要添加DLL文件本身。添加它所在的目录。但看起来你已经有了。这很令人困惑。您收到的消息来自Windows加载程序。检查您是否确实拥有该文件,
libopencv\u core2410.dll
。是的,该文件存在,并且位于C:\opencv\build\x86\mingw\bin中。我应该把它移到可执行文件的目录吗?@Zephyr:是的,我会尝试(复制,而不是移动)。但从长远来看,你需要弄清楚这里到底发生了什么。在路径中包含该目录时,应已找到该目录。请注意,如果不清楚,更改PATH默认值不会更改任何给定进程(如命令解释器实例)中PATH的值。这就是为什么我写了“restartcode::Blocks”,但是,如果您是从命令解释器运行程序,请重新启动它。谢谢,从C:opencv\build\x86\mingw\bin复制所有DLL消除了系统错误。但是,另一个错误(可能无关)正在发生:在libopencv_core2410.dll中找不到入口点
   #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; 
    }'