我正在尝试使用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? 还有别的吗?
答案 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代码中包含的图书馆标题。