2011-09-29 99 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),並建立這種方式讓它們完全合併而不會帶來額外的麻煩。

如果你有庫並且你鏈接到那些你應該讓它們合併。