日期:2014-05-16 浏览次数:20773 次
其实符号这个概念,有点底层功底的程序员都应该晓得。其实就是标志的意思。比如说,标志属性(变量),一个行为(函数)或者其他。
在linux下编译,时间长了,一定会遇到使用【nm】【ldd】【readelf】的时候。
不扯淡了,直接进入到今天的正题。你跟着这边文章看下来,你应该可以学会下面几点:
1,dlopen可能比-llibrary的编译更靠谱。(我也不知道为什么)
2,dlopen不能打开【还存在未定义符号】的动态库
3,类什么时候会报未定义
1,1.h 1.cpp ==> 1.so
2,main.cpp ===> main(采用动态加载动态库的技术)
class A { public: A(); ~A(); }
extern "C" { A* GetAddr() { return new A(); } };
A::A() { }
#include <dlfcn.h> #include "1.h" int main() { void* module = dlopen("./lib1.so", RTLD_LAZY); if (module == NULL) { cout << dlerror() << endl; } return 0; }
2,dlopen不能打开【还存在未定义符号】的动态库
3,类什么时候会报未定义