【问题标题】:Problems with Opencv 2.3.1Opencv 2.3.1 的问题
【发布时间】:2012-02-16 18:25:34
【问题描述】:

我有一个问题:

我正在使用 VS Express 2010 并尝试将 opencv 库添加到我的项目中,所以我已经将 bin 文件添加到我的路径中,然后将 lib 添加到我的项目的属性和 2 个包含目录中

这是我的程序的文本:

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    IplImage* img=0;
    img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR);
}

我有一个错误:Error 1 error LNK2019: unresolved external symbol _cvLoadImage referenced in function _main c:\Users\Home\documents\visual studio 2010\Projects\example2\example2\ex2.obj

我做错了什么? 谢谢大家

【问题讨论】:

    标签: c++ c visual-studio-2010 opencv


    【解决方案1】:

    确保您正确链接到 OpenCV 库。由于 cvLoadImage 是 OpenCV 中 HighGUI 库的一部分,因此请确保链接到 opencv_highui231.lib(发布中)和 opencv_highguid231.lib(调试中)。

    要在 Visual Studio 2010 中执行此操作,请右键单击您的项目,然后转到 Linker->Input 并在 Additional Dependencies 中键入您希望链接到的库的名称。还要确保路径是可访问的,方法是在 Additional Dependencies 字段中输入相对路径,或者在 Linker->General 中设置 Additional Library Directories。

    【讨论】:

    • 我猜是我写的,这是我在 Linker->Input opencv_video231d.lib opencv_ml231d.lib opencv_legacy231d.lib opencv_imgproc231d.lib 和我的路径 D:\opencv\build\x86\vc10 的 lib 文件\lib;%AdditionalLibraryDirectories)
    • 另一个问题可能是这些函数在 2.3.1 中已被弃用。尝试仅包含opencv.hpp,然后使用cv::imread() 而不是cvLoadImage()
    • 我猜这不是关键,IntelliSense:不存在从“cv::Mat”到“IplImage *”的合适转换函数 c:\users\home\documents\visual studio 2010\projects\example2 \example2\ex2.cpp 6
    • 是的,你还得说 cv::Mat image = cv::imread(...)。语法会有所改变。但这可能不是问题:这绝对是链接器问题。未解析的外部意味着您有一个头文件告诉编译器一个函数存在,但链接器无法找到它的实现。仔细检查您的链接器设置以确保它们正在被使用。尝试将库的名称更改为错误的值,以查看链接器是否给您一个错误(如果找不到它们,它应该)。确保 .lib 文件来自与您使用的标头相同的版本。
    • 如果我更改链接输入文件,它会显示类似错误 1 ​​错误 LNK1104: cannot open file 'opencv.lib' C:\Users\Home\documents\visual studio 2010\Projects\example2 \example2\LINK
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2020-10-17
    相关资源
    最近更新 更多