我知道这已经被问过好几次了,但我仍然在为简单的 opencv 代码的链接器错误未定义参考而苦苦挣扎。这是我的代码:
#include <opencv2/highgui.hpp>
using namespace cv;
int main(int argc, char** argv) {
Mat inputImage = imread(argv[1]);
imshow("Input Image", inputImage);
waitKey(0);
}
我正在使用 eclipse IDE、cygwin g++ 编译器和 opencv 3.0。我已正确给出包含路径、库搜索路径为“C:\opencv\build\x64\vc11\lib”和“C:\opencv\build\x64\vc11\staticlib”和库:opencv_highgui300、opencv_highgui300d、opencv_core300、opencv_core300d ,opencv_imgcodecs300,opencv_imgcodecs300d 我认为这些对于这个简单的代码来说已经足够了,从 opencv 文档中可以清楚地看到。但是如上所述,imread、imshow、waitkey 仍然出现链接器错误。我尝试使用 pkg-config 但 pkg-config 在我的 64 位机器上出现问题:加载共享库时出错,也无法解决。
下面是构建输出:
make all
构建文件:../ShowImage.cpp
调用:Cygwin C++ Compiler
g++ -I"C:\opencv\build\include\opencv" -I"C:\opencv\build\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"ShowImage.d" -MT"ShowImage.d" -o "ShowImage.o" "../ShowImage.cpp" 完成构建:.. /ShowImage.cpp
构建目标:Test.exe
调用:Cygwin C++ Linker
g++ -L"C:\opencv\build\x64\vc11\lib" -L"C:\opencv\build\x64\vc11\staticlib" -o "Test.exe " ./ShowImage.o -lopencv_highgui300 -lopencv_highgui300d -lopencv_core300 -lopencv_core300d -lopencv_imgcodecs300 -lopencv_imgcodecs300d
./ShowImage.o: 在函数main':*
*/cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12: undefined reference to
cv::imread(cv::String const&, int)' /cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test /Debug/../ShowImage.cpp:12:(.text+0x44):重定位被截断以适应:R_X86_64_PC32 针对未定义的符号 `cv::imread(cv::String const&, int)'
我错过了什么吗?任何帮助将不胜感激。