windows编译动态链接库,dll+lib的形式

  之前一直在linux上做开发,没怎么关注过windows上如何编译动态链接库。不过一直存疑,为什么windows上的动态链接库是.dll配合.lib使用的,这个又是怎么生成的呢,通过一段时间的查资料和尝试,最终发现,windows上生成动态链接库之后如果需要.lib,用于编译阶段的符号查找,那么,必须要在需要导出的函数前面加一个宏。也就是__declspec(dllexport),在使用时为__declspec(dllimport)。

具体可以是

1 #ifdef MAKEDLL_EXPORTS
2 #define MAKEDLL_API __declspec(dllexport)
3 #else
4 #define MAKEDLL_API __declspec(dllimport)
5 #endif

然后记得在导出库文件的工程中加入MAKEDLL_EXPORTS宏即可。

  这样,在生成时会生成一个dll+一个lib文件。否则,只能动态加载dll文件才能使用,并且不能直接使用库里面的函数,需要通过动态加载的dll来调用其中的库函数。

 

 

参考:

https://www.cnblogs.com/qinguoyi/p/7257353.html

posted @ 2019-10-09 20:28  叫我小李好了  阅读(1281)  评论(0编辑  收藏  举报