OpenCV 2.3 with Qt 4.3.7
OpenCV 2.3 with Qt 4.3.7
我已经成功构建并运行Qt 4.3.7和OpenCV 2.3与Qt启用。当我使用
启动一个窗口时cvNamedWindow( "video", 0 );
我成功加载了一个完整的Qt界面!精彩:)
然而! !当我使用
命令时void callbackButton(int state, void* userdata){
int x;
x=3;
}
cvCreateButton(nameb2,callbackButton,nameb2,CV_CHECKBOX,0);
我得到错误信息
error LNK2001: unresolved external symbol _cvCreateButton
我不明白,因为Qt界面已经有很多按钮了吗?有人可以解释我从包括,可能导致这遗漏了什么?
谢谢!
您使用了错误的参数来调用cvCreateButton。根据这里的文档,函数的签名是
cvCreateButton(const char* button_name CV_DEFAULT(NULL), CvButtonCallback on_change CV_DEFAULT(NULL), void* userdata CV_DEFAULT(NULL), int button_type CV_DEFAULT(CV_PUSH_BUTTON), int initial_button_state CV_DEFAULT(0)
和示例调用是:
cvCreateButton(NULL,callbackButton);
cvCreateButton("button2",callbackButton,NULL,CV_CHECKBOX,0);
cvCreateButton("button3",callbackButton,&value);
cvCreateButton("button5",callbackButton1,NULL,CV_RADIOBOX);
cvCreateButton("button6",callbackButton2,NULL,CV_PUSH_BUTTON,1);
,回调函数的声明必须是:
CV_EXTERN_C_FUNCPTR( *CvButtonCallback)(int state, void* userdata));
你得到一个链接错误,而不是一个编译器错误,因为cvCreateButton有外部"C"链接-这意味着参数不能在编译时检查。
我通过调用函数cv::createButton而不是cvCreateButton解决了这个问题(如果我是正确的方式在OpenCV2中调用方法)。
第三个参数必须是void*
。改为:
cvCreateButton(nameb2,callbackButton,NULL,CV_CHECKBOX,0);
,它会工作。
编辑
上面的语句给出了一个错误。第三个需要的参数是"void *"——这与任何东西都兼容,因此C和c++都不会对您提供的内容产生问题。你不能由此引发链接器错误。通过编码引发链接器错误的唯一原因是当你在c++中不使用原型(忘记使用头文件),然后c++自己创建了一个不属于任何库的混乱名称。在这种情况下,编译器首先会在编译时警告你,你错过了原型(对于C和c++),然后链接器可能会抛出一个错误(仅对于c++)。
如果你没有看到编译器的原型警告,那么这不是你的问题。
链接错误。尝试将opencv .lib
文件(或多个文件)添加到项目库路径。VS2010 OpenCV.
编辑
精炼问题:即使在项目中添加任何OpenCV库,链接也会失败。
原因:该符号通常不在库中。
解决方案:您必须更改一些设置并自己编译它们。
参见:openCV 2.2 createButton LNK 2019错误在Visual Studio 2010
相关文章:
- Qt with WinAPI MouseProc
- 如何使用Qt QSqlDriver::subscribeToNotification with SQLite3?
- Using QT .qrc File with Visual Studio Proj...?
- Qt with Dlib and CUDA
- Visual Studio with qt 无法编译 gui 类
- LNK2019 With Qt and Gmock
- MySQL with Qt issue
- "Static polymorphism with Qt signal/slot: What is wrong?"
- Build Tesseract OCR with Qt 5.8
- C++/Qt memcpy crash with QSharedMemory
- Qt Application with QTabWidget, QGraphicsScene and QPushButt
- Qt with Visual Studio macro issue
- 断言失败 (size.width>0 && size.height>0) Qt with OpenCV
- Qt with Lua |放置 lua 文件的位置
- Qt with OpenCV - 下载哪一个
- Qt with Eclipse CDT Juno
- GUI C++ Qt with Visual Studio 2010
- <double> QList in QT with Visual Studio add in
- Qt with Visual Studio 2010
- Objective-C in Qt with Mavericks