我已经安装了32位Qt并为OpenCV2.4.10编译了64位二进制文件(来自源代码)。我有两个问题:
-
我在安装Qt之前建立了OpenCV库,但据我所知,更多的是使用Qt风格的UI,但没有必要与Qt接口,我应该重建OpenCV吗?
-
当我尝试64位Qt时,它不起作用,因为OpenCV是用VS 2013编译的-只有32位。所以我转移到32位Qt,但它仍然给我链接错误的形式:主窗口。obj:错误LNK2019:未解析的外部符号"void __cdecl cv::fastFree(void *)"(?fastFree@cv@@YAXPAX@Z)引用函数"public: __thiscall cv::Mat::~Mat(void)"(? ? 1 mat@cv@@qae@xz)我在.pro文件中添加了包含路径和库。我得到错误,因为Qt是32位,我使用64位OpenCV?
我肯定需要使用64位OpenCV。是否有一种方法可以让Qt与OpenCV接口?或任何其他方式有GUI与c++/OpenCV?
谢谢,
如果你想一下当你按下编译按钮时发生了什么,那么你就会明白为什么你的库不能有两个不同的体系结构集。
当你用32位编译你的程序时,它是以一种32位(碰巧是64位)架构可以理解并在底层硬件上运行的方式进行编码的。
然而,32位硬件绝对不能运行64位架构集编码的程序,所以当你试图在你的应用程序中包含两个不同的二进制文件时会发生什么?visual studio怎么知道如何将它们组合在一起呢?为了更好地理解,这个和那个可能值得看一看。
现在回答:
我肯定需要使用64位OpenCV。是否有一种方法可以让Qt与OpenCV接口?或任何其他方式有GUI与c++/OpenCV?
如果你需要64位OpenCV,那么你将不得不找到一种方法来使用64位Qt或不使用Qt.这里是一个很好的指南,如何启动和运行它,你需要添加一些额外的功能到Visual Studio。
你当然可以使用QtCreator,但是如果你对Visual Studio更熟悉,那么在QtCreator上花点功夫还是值得的。