Windows编译动态库时选择是否同时导出静态库

来源:互联网 发布:360压缩mac版 编辑:程序博客网 时间:2024/06/09 20:03

如果只是单纯的编译静态库,最后生成的文件就是一个静态库lib,但是如果编译动态库的话可以选择是否同时导出静态库,有静态库的话编程也方便一点,只要在要导出的函数前面加上__declspec(dllexport)或者extern “C”即可。

如果头文件为了通用,不仅一个平台使用,可以用宏隔开

#ifdef   MY_EXPORT
#define MY_FUNC_API extern "C" __declspec(dllexport)
#else
#define MY_FUNC_API
#endif


然后使用的时候在windows工程里面的文件中定义MY_EXPORT就可以了,不过最好在工程属性-->C/C++-->Preprocessor的Preprocess define中添加

如果是第三方的动态库可能就没有静态库,这个时候要用

HMODULE module = LoadLibrary("dllnamedll");    //dllname为动态库的名称

typedef int (WINAPI *functype)(int);    //functype为函数指针,有自己的参数列表

functype fun = (functype)GetProcAddress(module, "functionname"); //function那么为要导出的函数名,如果想要函数名好记,最好用c的方式导出函数

func(1);  //func为导出的函数指针,可以直接运行

0 0
原创粉丝点击