当前位置: 技术问答>linux和unix
Linux 下调用动态链接库
来源: 互联网 发布时间:2016-12-17
本文导语: 别人做的动态链接库,现在需要调用里面的函数做点东西,可是我对这个方面不太会,就是个小菜鸟,求高手帮忙。 现在有别人给的,有.h .cpp .a .so文件,我要怎么调用呢?测试文件:main.cpp | ...
别人做的动态链接库,现在需要调用里面的函数做点东西,可是我对这个方面不太会,就是个小菜鸟,求高手帮忙。
现在有别人给的,有.h .cpp .a .so文件,我要怎么调用呢?测试文件:main.cpp
现在有别人给的,有.h .cpp .a .so文件,我要怎么调用呢?测试文件:main.cpp
|
如果静态加载的话,包含你所需要加载类库的头文件,这样编译就没有问题;
链接时,用-L指定库的路径,-l指定库的名字,这样就OK了。
你的报错:
.h error:expected constructor. destructor. or type conversion before '(' token
.h error:'WORD' does not name a type
应该是在编译阶段,那就是所链接的符号找不到,比如WORD,你可以查一下WORD有没有定义。
一般“does not name a type”错误,是这个类型不认识。
链接时,用-L指定库的路径,-l指定库的名字,这样就OK了。
你的报错:
.h error:expected constructor. destructor. or type conversion before '(' token
.h error:'WORD' does not name a type
应该是在编译阶段,那就是所链接的符号找不到,比如WORD,你可以查一下WORD有没有定义。
一般“does not name a type”错误,是这个类型不认识。
|
g++ -o test main.cpp *.a
就可以了
*.a就是别人给你的库文件。编译生成test
就可以了
*.a就是别人给你的库文件。编译生成test
|
export LANG=C
g++ -o test main.cpp *.a
提示什么?
g++ -o test main.cpp *.a
提示什么?
|
错误提示是什么?
C++中有name-mangling,动态库尽量用纯C版本的
C++中有name-mangling,动态库尽量用纯C版本的
|
在LINUX环境下,我知道你可以DLOPEN,DLCLOSE,一系列函数通过函数名来找到相应的函数,返回函数指针你可以通过函数指针调用该函数,C++我快忘光拉,不知道C++能不能这样做!
|
.h error:expected constructor. destructor. or type conversion before '(' token
"("前面的那个结构体或者变量系统不认识。
"("前面的那个结构体或者变量系统不认识。