【问题标题】:Link static libs (.a) into exe with mingw使用 mingw 将静态库 (.a) 链接到 exe
【发布时间】:2011-12-11 21:10:30
【问题描述】:

我目前正在尝试使用 OpenCV,但遇到了一些麻烦.. 我将 qt ide 与 mingw 一起使用来编译我的应用程序。

我的代码如下所示:

#include “highgui.h”

int main( int argc, char** argv ) 
{
    IplImage* img1 = cvLoadImage( argv[1] );
    cvNamedWindow( “Example”, CV_WINDOW_AUTOSIZE );
    cvShowImage( “Example”, img1 );
    cvWaitKey(0);
    cvReleaseImage( &img1 );
    cvDestroyWindow( “Example” );
    return(0);
}

这是在我的 .pro 文件中:

INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/"
INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/opencv/"
INCLUDEPATH += "E:/OpenCV2MinGWBuild/install/include/opencv2/"
LIBS += -L"E:/OpenCV2MinGWBuild/install/lib/" -lopencv_calib3d231.dll -lopencv_contrib231.dll -lopencv_core231.dll

这些库是 .a-s(dll 在 lib 的名称部分,它不是扩展名)。我知道 .a 库是特定于 linux 的,但 mingw 应该能够使用它们吗?

我使用 mingw 构建了 OpenCV 库,但我无法让它们链接到我的 Qt 应用程序。 MinGW 可以很好地看到头文件,但不能看到库。 我总是收到“对cvShowImage'", "undefined reference tocvNamedWindow'的未定义引用”(等)错误..

感谢任何帮助! 谢谢!

【问题讨论】:

  • 这些 .a 文件是 Windows 还是 Linux 库?
  • windows下用mingw编译的..

标签: c++ qt opencv static-libraries qmake


【解决方案1】:

dll.a 不是静态库文件,它们是动态链接 .dll 的存根 - 您需要重新构建 OpenCv 以使用静态库 .lib 并将它们直接与您的代码链接

【讨论】:

  • 好的..我会试试的..谢谢!
  • @Martin 关心指出如何以这种方式重建它们?它是 CMake 中的一个选项吗?
  • @IvoFlipse,从来不需要,但显然只是在 cmake 中取消选中“BUILD_SHARED_LIBS”。见shiffman.net/2011/01/23/…
猜你喜欢
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多