2

我正在尝试使用 boost 和 cpp-netlib。cpp-netlib 的静态库大约40m(发布版),即使链接到一个小的 helloworld 也会很。所以我想在开发的时候尝试动态dll+import lib,如何为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?还有什么办法吗?

4

1 回答 1

1

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

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

从 0.9.3 版开始,cpp-netlib 生成三个静态库。在 Windows 上使用 Visual C++,它们是:

cppnetlib-client-connections.lib
cppnetlib-server-parsers.lib
cppnetlib-uri.lib

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

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

于 2016-07-04T04:40:22.760 回答