2010-01-15 59 views
1

標題僅供嘲笑。 :-) 我知道這是不可能的,但這是我的問題。在同一時間使用在發佈和調試模式下加速

我的應用程序(實際上是一個DLL)使用Boost。它也使用外部API,它也使用Boost。 外部API當然是在釋放二進制文件中提供的,只需要釋放Boost二進制文件即可。

當我在發佈模式下編譯/鏈接我的DLL時,我沒有問題。我精確地將我的應用程序以動態方式鏈接到Boost(BOOST_ALL_DYN_LINK)。在調試模式下,我無法加載我的DLL。 我不確定這是因爲Boost,但我懷疑Windows不喜歡使用兩個Boost(由外部庫調用的發行版,以及由我的代碼調用的調試版)。

如果我將我的代碼與發佈Boost靜態鏈接,它會更好嗎?

我不認爲它與CRT有關,因爲我在事件查看器中沒有任何內容。

我使用Visual Studio 2005 SP1。

謝謝。

回答

0

如果我靜靜地將我的代碼與發佈Boost鏈接,它會更好嗎?

是的,這就是我所期望的 - 如果您鏈接靜態,你在你的二進制文件得到提振「複製」,並沒有提升DLL是不斷加載自己的提升需要..外部庫會很樂意鏈接到其發佈dll。然而,如果外部庫實際上在你的應用程序調用的公共API中使用boost,這將不起作用!在這種情況下,您將無法解決問題。如果你打電話給任何需要提升內容的API,那麼你的提升版本必須與匹配,以提升API的實現。

+0

我打算將我的調試應用程序靜態鏈接到發佈Boost。 你的「然而」仍然適用? – Oodini 2010-01-15 16:50:09

+0

如果您將應用程序與boost的發佈版本相關聯,爲什麼不使用與外部庫相同的boost DLL運行時?然後我看不到需要靜態鏈接。 – 2010-01-15 17:15:53

+0

你是完全正確的。我的思想被卡住了2個助推器。 :-) – Oodini 2010-01-15 17:17:55

相關問題