2017-08-26 105 views
0

所以我進入C + +,我最近建立了一個記錄器類,即打印任何類型的屏幕和/或日誌文件。我建立它作爲一個DLL和輸出文件構建C + + DLL的發佈和調試

console.h 
console.lib 
console.dll 

我然後導入這些文件作爲附加包含對其他項目和它的作品,僅在調試模式(在它被建)我想爲它工作不管構建配置如何。我怎樣才能做到這一點。舉個例子,我最近使用了GLFW庫,並且可以在兩個版本中進行編譯。

+0

您是否使用Visual Studio? – ZDF

+0

@ZDF是的,我正在使用Visual Studio –

+0

只需將配置從調試更改爲發佈和構建。輸出在Release子目錄中生成。在創建新項目時,這兩種配置都會自動生成。 – ZDF

回答

0

如果我正確地理解你正試圖將你的lib/dll的相同版本與你的應用的調試和發佈配置鏈接起來。

在一般情況下,您需要兩個版本的lib/dll文件,調試和發佈,並鏈接到與您的應用程序配置相匹配的文件,因此對於您的應用程序的調試配置鏈接,並通過發佈發佈。

使用混合配置(如調試DLL與釋放EXE)最可能的問題是在一個域中分配內存,並在另一個域釋放它。

編輯:

爲了詳細說明,問題就可以分配在DLL中的內存和你的EXE釋放它,反之亦然。至少在VS C-Runtime中這是行不通的。有關更多詳細信息,請參閱:https://stackoverflow.com/a/45806858/453271

+0

回答讚賞,但我在發佈模式下構建了lib,並且無法運行lib在調試模式中包含的應用程序。但是,像GLEW/GLFW這樣的庫只能在一個庫中進行調試和發佈,是否有建立可以在兩種模式下運行的庫 –

+0

這些庫API是否設計爲分配和釋放DLL中的內存?我確定他們是。您也可以重新設計您的API,例如在您的DLL內部分配/釋放您的記錄器,例如通過提供'CreateLogger()'/'DestroyLogger()'導出的函數。也適用於所有其他導出的類。編輯答案以提供更多細節。 –