静态链接未定义引用(CMAKE / MinGW)

时间:2015-07-02 18:50:04

标签: c++ mingw static-linking

我尝试使用带静态链接的MinGW构建示例MathGL项目。 我已经将Zlib和PNGlib构建为静态库(默认情况下我认为Zlib是静态的,并且从PNGlib makefile中删除了#adco-install'规则)并在我的C:/ mingw32中获得了libz.a和libpng.a文件/ lib中。

MathGL提供了CMAKE文件,找不到这些库,所以我用ZLIB_LIBRARY =运行cmake等等,成功构建了它。

结果,我有3个文件:

  • libmgl.dll
  • libmgl.dll.a
  • libmgl.a

编译示例:g++ main.cpp -IC:/mingw32/include -LC:/mingw32/lib -lmgl 它可以工作,但需要所有mingw .dll和libmgl.dll

如果我使用-static提供上一个命令,我会收到错误:

$ g++ main.cpp -IC:/mingw32/include -static -LC:/mingw32/lib -lmgl
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0xa): undefined reference to `_imp___ZTV8mglGraph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0x2f): undefined reference to `_imp__mgl_create_graph_gl'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0x4d): undefined reference to `_imp__mgl_create_graph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphD1Ev[__ZN8mglGraphD1Ev]+0xa): undefined reference to `_imp___ZTV8mglGraph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphD1Ev[__ZN8mglGraphD1Ev]+0x28): undefined reference to `_imp__mgl_use_graph'
...
collect2.exe: error: ld returned 1 exit status

为什么我无法将所有库链接到静态? .a文件是否意味着静态库?

0 个答案:

没有答案