构建cpp-netlib共享库

build cpp-netlib shared library

本文关键字:共享 cpp-netlib 构建      更新时间:2023-10-16

我正在尝试使用boost和cpp-netlib。cpp-netlib的静态库大约40m(发布版本),即使链接到一个小helloworld也可能非常。所以我想在开发时尝试动态dll+导入库,我如何为cpp-netlib构建dll+lib ?

我尝试修改CMakeLists.txt,将SHARED添加到

add_library(cppnetlib-uri SHARED ${CPP-NETLIB_URI_SRCS})
add_library(cppnetlib-server-parsers SHARED ${CPP-NETLIB_HTTP_SERVER_SRCS})
add_library(cppnetlib-client-connections SHARED ${CPP-NETLIB_HTTP_CLIENT_SRCS})

只生成.dll,没有.lib。谷歌说必须有输出功能。所以一种方法可能是编写一些虚拟函数并导出它们以生成。lib?还有别的办法吗?

在当前0.12.0版本的cpp-netlib之前是不可能的。当(且仅当)使用__declspec(dllexport)属性或DEF文件导出一个或多个函数时,链接器才会为DLL生成一个导入库。然而,这个特性目前还没有在库的代码中实现。这就是为什么在构建之后,您只能看到dll,而不能看到它们各自的导入库。

官方文档的这一部分确认只打算生成静态库:

从0.9.3版本开始,cpp-netlib生成了三个静态库。使用Windows上的Visual c++:

cppnetlib-client-connections。自由
cppnetlib-server-parsers。自由
cppnetlib-uri.lib

用户可以在~/cpp-netlib-build/libs/network/src中找到。

如果您想大幅度减少构建时间,我建议您预编译包含在代码中的库的头文件。