今天在工作上要调用别人的函数,故而用到了静态链接,网上方法挺多的就不赘述了,只是来说说自己的大概情况。
pro文件里面添加
LIBS +=My_path/libwaveformGEN.a //路径要一致,否则会报错找不到该文件
然后我就报了三行错
relocation R_X86_64_PC32 against symbol `ceil@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
final link failed: Bad value
collect2: error: ld returned 1 exit status
看样子是编译可选项目里没有-fPIC
于是又加了
QMAKE_CFLAGS += -fPIC
QMAKE_CXXFLAGS += -fPIC
然后依然还是原来的错误。。。后来网上各种找啊。。
后来怀疑是不是编译.a文件没有添加-fPIC
先扔个背景, 我要调用的静态链接库是带我的前辈写的,之前用codeBlock一点问题没有,让我回去自己检查检查 说白了就是他觉得代码能跑问题肯定不在这。。。(前辈喊不动。。而且他也忙 然后就这么耗着。。)
但是我用的是Qt5的开发,区别和codeBlock有点大。。。最废了不少口舌才让他添加-fPIC重新编译了一个新的.a 文件 最后rebuild下
调用头文件因为是C语言写的
所以
extern "C"
{
#include "yourFileName.h"
}
然后就成功了
。。