window编译动态库
dll动态链接库
__declspec(dllexport) 用于Windows中的动态库声明导出函数、类、对象等供外面调用,省略给出.def文件。即将函数、类等声明为导出函数,供其它程序调用,作为动态库的对外接口函数、类等。
__declspec(dllimport) 用于Windows中从别的动态库中声明导入函数、类、对象等供本动态库或exe文件使用。当你需要使用DLL中的函数时,往往不需要显示地导入函数,编译器可自动完成。
extern "c" 如果使用cplusplus开发,需要在函数上声明,表示用c语言方式编译函数。
#ifdef __cplusplus
#define EXT extern "C"
#else
#define EXT
#endif
#ifdef _WIN32 //包含 win32和win64
#define LIB EXT __declspec(dllexport)
#else
#define LIB EXT
#endif
linux编译动态库
linux生成的动态库是so文件,so库存放在/usr/lib或环境变量中,如果要在当前路径调用库,加入export LD_LIBRARY_PATH=./
可以再linux使用env命令查看环境信息
生成命令:
gcc++ -fPIC -shared -o $@
gcc++ -fPIC -shared -o mypath mypath.cpp
makefile文件
test:test.cpp
gcc -fPIC -shared -o $@ $<
cp $@ /usr/lib
make
网友评论