2011-09-29 61 views
0

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

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

+0

不,只是链接静态V8和卷曲.libs,以便他们的代码包含在您的DLL中。 –

+0

当我这样做,建立我的项目与/ MDd/DLL,我得到错误说'LIBCMTD.lib(invarg.obj):错误LNK2005:__invalid_parameter已经在MSVCRTD.lib(MSVCR90D.dll)中定义'这让我相信我需要将V8和CURL编译为DLL。有什么建议么? –

+0

不,你只需要用相同的编译器设置重新编译这些静态库。/MD也是必需的,不支持混合CRT版本。 –

回答

0

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

0

我一般不得不在我的项目中包含依赖关系的源代码(在你的情况下都是V8和CURL),并建立这种方式让它们完全合并而不会带来额外的麻烦。

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