2010-04-13 41 views
0

我有幾個windows C++程序通過DLL使用SQLITE。 visual-studio項目屬性引用sqlite3.lib。他們建立並運行OK。Visual Studio 2008 C++沒有檢測到SQLITE DLL的依賴

但是,當我創建一個安裝程序時,不能可靠地檢測到對SQLITE3.DLL的依賴性,該DLL不包括在內,並且我的客戶端陷入「DLL Hell」中。

每一次,我都必須手動檢查安裝程序是否包含DLL。如果沒有,那麼我必須手動使用「文件系統編輯器」來添加DLL。當我這樣做,並請求重建安裝程序時,visual studio突然檢測到DLL,並添加了另一個副本,然後抱怨有兩個副本。所以我必須停止構建,手動刪除多餘的副本,然後重新開始構建。

這裏是截圖,顯示雙份。

alt text http://66.199.140.183/vs2008.jpg

這是非常令人沮喪,而且容易出錯!

有什麼辦法強制visual studio每次只包含一個DLL副本而無需人工干預?

回答

0

「排除」的依賴屬性設置爲「False」和「Vital」設置爲「True」嗎? (或者更重要的是,你甚至可以將「條件」設置爲「真」,這會使該組件始終安裝。)

+0

我相信你的解決方案需要我在開始構建之前手動添加DLL,而不是依靠在依賴檢測上。這將是好的,除了VS2008然後添加了DLL的第二個副本,然後抱怨存在兩個副本的事實。 – ravenspoint 2010-04-13 16:47:05

+0

我指的是安裝項目部分下顯示的「檢測到的依賴項」部分。 如果您沒有使用安裝項目,那麼假設您將SQLITE3設置爲「參考」(如果您的項目屬性...),在這種情況下,您可以在項目屬性的「參考」選項卡中突出顯示它,然後更改「複製本地」的屬性爲「真」。 – ewall 2010-04-14 15:01:25