【问题标题】:Possible to link .dll with .lib?可以将 .dll 与 .lib 链接吗?
【发布时间】:2011-09-29 17:30:48
【问题描述】:

这是我的困境:我正在尝试创建我的项目的.dll 版本。该项目使用当前构建为调试.libs 的 V8 和 CURL 库。我想将它们全部打包在一个可以共享的 DLL 中(我知道我需要使用 __declspec(dllexport) 更改我的代码,但这是一个单独的问题)。

我是否需要将 V8 和 CURL 库编译为 DLL,然后以某种方式将它们包装在我自己的 DLL 中?

【问题讨论】:

  • 不,只需链接静态 v8 和 curl .libs,以便它们的代码包含在您的 dll 中。
  • 当我这样做时,使用 /MDd /DLL 构建我的项目,我收到错误消息说 'LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR90D.dll )' 这让我相信我确实需要将 V8 和 CURL 编译为 DLL。有什么建议吗?
  • 不,您只需要使用相同的编译器设置重新编译那些静态库。它们也需要 /MD,不支持混合 CRT 版本。

标签: visual-c++ linker


【解决方案1】:

如果 CURL 库的 .lib 没有 .dll,那么它们肯定是静态库。当您将它们链接到您的 DLL 时,这些库中的代码将链接到您的 DLL。

【讨论】:

    【解决方案2】:

    我通常必须在我的项目中包含依赖项的源代码(在您的情况下是 V8 和 CURL),并以这种方式构建以使它们完全合并而不会带来额外的麻烦。

    如果你有库并且你链接到那些你应该将它们合并的库。

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多