相对动态库来说,静态库更简单,但也有些要注意的小细节:
一、
静态库链接的时候,VS有警告
warning LNK4006: __NULL_IMPORT_DESCRIPTOR already defined
这是因为对静态库而言,不需要添加任何依赖的动态库,依赖是由编译链接该静态库的EXE/DLL去负责的。
二、
静态库的函数和类的导出,都不需要像动态库那样加__declspec( dllexport )。如果加了__declspec(dllexport),VS反而在链接的时候提示: error LNK2019: 无法解析的外部符号(unresolved external symbol...)
三、
同一个Solution里,如果要使用到一个静态库,通过设置项目依赖即可,可以不用在项目的输入库中指定。
四、
静态库使用的是链接该静态库的 EXE/DLL 的资源。所以如果静态库里存放的对话框类,对话框资源还是需要加到 EXE/DLL 中。
一、
静态库链接的时候,VS有警告
warning LNK4006: __NULL_IMPORT_DESCRIPTOR already defined
这是因为对静态库而言,不需要添加任何依赖的动态库,依赖是由编译链接该静态库的EXE/DLL去负责的。
二、
静态库的函数和类的导出,都不需要像动态库那样加__declspec( dllexport )。如果加了__declspec(dllexport),VS反而在链接的时候提示: error LNK2019: 无法解析的外部符号(unresolved external symbol...)
三、
同一个Solution里,如果要使用到一个静态库,通过设置项目依赖即可,可以不用在项目的输入库中指定。
四、
静态库使用的是链接该静态库的 EXE/DLL 的资源。所以如果静态库里存放的对话框类,对话框资源还是需要加到 EXE/DLL 中。