构建cpp-netlib共享库

时间:2014-07-04 14:41:40

标签: c++ boost cmake dynamic-linking cpp-netlib

我正在尝试使用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? 还有别的吗?

1 个答案:

答案 0 :(得分:1)

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

official documentation的这一部分确认只生成静态库:

  

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

     

cppnetlib-客户connections.lib
  cppnetlib-服务器parsers.lib
  cppnetlib-uri.lib

     

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

如果您希望大幅减少构建时间,建议您precompile代码中包含的图书馆标题。