這是我的困境:我試圖創建一個.dll
版本的我的項目。該項目使用V8和CURL庫,它們當前構建爲調試.lib
。我想將它們全部打包在一個可以共享的DLL
中(我知道我需要將代碼改爲__declspec(dllexport)
,但這是一個單獨的問題)。可能與.lib鏈接.dll?
我是否需要將V8和CURL庫編譯爲DLL,然後以某種方式將它們包裝到自己的DLL中?
這是我的困境:我試圖創建一個.dll
版本的我的項目。該項目使用V8和CURL庫,它們當前構建爲調試.lib
。我想將它們全部打包在一個可以共享的DLL
中(我知道我需要將代碼改爲__declspec(dllexport)
,但這是一個單獨的問題)。可能與.lib鏈接.dll?
我是否需要將V8和CURL庫編譯爲DLL,然後以某種方式將它們包裝到自己的DLL中?
如果你有一個.lib
而沒有.dll
爲CURL庫,那麼他們肯定是靜態庫。當您將它們鏈接到您的DLL時,這些庫中的代碼將鏈接到您的DLL中。
我一般不得不在我的項目中包含依賴關係的源代碼(在你的情況下都是V8和CURL),並建立這種方式讓它們完全合併而不會帶來額外的麻煩。
如果你有庫並且你鏈接到那些你應該讓它們合併。
不,只是鏈接靜態V8和捲曲.libs,以便他們的代碼包含在您的DLL中。 –
當我這樣做,建立我的項目與/ MDd/DLL,我得到錯誤說'LIBCMTD.lib(invarg.obj):錯誤LNK2005:__invalid_parameter已經在MSVCRTD.lib(MSVCR90D.dll)中定義'這讓我相信我需要將V8和CURL編譯爲DLL。有什麼建議麼? –
不,你只需要用相同的編譯器設置重新編譯這些靜態庫。/MD也是必需的,不支持混合CRT版本。 –