下面举例说明:
1.exportClass.h
#ifndef __EXPORT_CLASS_H
#define __EXPORT_CLASS_H
class ExportClass {
public:
void printf();
};
extern "C" ExportClass * createObject();
#endif
2.生成动态库
g++ -rdynamic -m32 -c exportClass.cpp
g++ -rdynamic -m32 -shared -o libexportClass.so exportClass.o
-rdynamic 却是一个 连接选项 ,它将指示连接器把所有符号(而不仅仅只是程序已使用到的外部符号)都添加到动态符号表(即.dynsym表)里,以便那些通过 dlopen() 或 backtrace() (这一系列函数使用.dynsym表内符号)这样的函数使用。
-m32 32位版本
3.test.cpp
#include "exportClass.h"
#include <dlfcn.h>
typedef ExportClass * (*CREATEOBJECT)();
CREATEOBJECT create_object;
typedef void* lib_handle;
lib_handle handle = d