大连建设执业资格注册中心网站,2023年装修风格及颜色,郑州建站以来,深圳市宝安区西乡街道邮政编码最近修改了一个项目#xff0c;以前生成静态库#xff0c;后改为生成动态库#xff0c;在Linux上没有问题#xff0c;但在Windows上只生成了.dll文件#xff0c;没有生成.lib文件。
在Windows中#xff0c;.lib文件除了可以用作静态链接库外#xff0c;还有另一种用途以前生成静态库后改为生成动态库在Linux上没有问题但在Windows上只生成了.dll文件没有生成.lib文件。
在Windows中.lib文件除了可以用作静态链接库外还有另一种用途就是用作动态链接库.dll的“导出库”。
后来找到原因代码里没有dllexport声明没有东西导出所以才没有生成.lib文件。
Linux和Windows对于生成库的默认行为不同前者在默认情况下是全部导出的后者则是需要显式说明导出的符号。
项目头文件很多都加声明很麻烦就在CMake里添加了
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
这样就跟Linux一样类和函数全导出了。
如果还有没有导出的像全局变量等还是要用__declspec(dllexport)声明导出。