2011-04-13 31 views
0

我創建了一個使用C++的dll和IM試圖創建一個安裝包,將允許這是否有VS或無法在其他計算機上運行,​​但問題是我不知道C++庫,我需要什麼C#應用程序讓它做到這一點。當我在空白虛擬機上運行應用程序時,它說 「xxxx遇到問題,需要關閉。」 如果我去下載visual studio 2008 express版本並將其安裝在機器上,我的程序將運行良好。問題出在85-185mb下載和335mb到1.1gb安裝在一臺機器上,使用它的程序只有33kb。那裏有很大的開銷... 如果我只從msdn站點安裝C++可再發行組件,它佔用了4MB,但它不會讓我運行我的程序。我需要什麼C++包來運行程序?

從C++什麼包做我需要做一個空白計算機上安裝此程序運行?

+0

我有依賴學步車,每次我運行它時,它指定一個新的DLL我失蹤。到目前爲止其上市的MSVCRT.dll MPR.dll和IESHIMS.dll。 IESHIMS是IE8的dll和我的程序犯規使用它,爲什麼它取決於它我不知道編輯:和WER.dll – caleb 2011-04-13 21:00:15

+0

問題是DLL在調試模式:|在發行版中重建它,併爲其提供所有庫,現在它運行 – caleb 2011-04-13 21:38:15

回答

1

這個問題可能很難回答的問題。如果你有C++ dll的源代碼,你應該能夠看到它的依賴關係,除非這個人使用了大量的com或者加載庫調用。我用來獲取C++依賴信息的最好工具之一是depends.exe。有一件事要檢查它的代碼是否你沒有使用調試版本,並且依賴於調試dll,我認爲它不在可再發行組件中。

+0

我有dll源代碼及其運行調試模式。如果我在發佈模式下構建它,那麼即使它們位於相同的目錄中,也找不到它的任何庫或.h文件。 – caleb 2011-04-13 21:18:28

0

迦勒,我建議你一個名爲Dependency Walker程序。它會顯示你所有的dll依賴關係。我確定Windows中有更多它們,但這是我一直使用的一段時間,我喜歡它。所以你從MS網站上下載了可再發行組件包,但你的應用程序可能依賴於其他一些庫。當我很久以前使用Visual Studio試圖構建我的安裝程序時,我記得它是在安裝程序中包含可再發行組件包或使用並行安裝的一種方式 - 取決於您的Visual Studio版本的許可協議是否允許您執行那還是不是。你也可以包含你在安裝程序中的所有dll依賴關係。

希望幫助

+0

我有依賴項步行者,每次運行它時,它都會指定我缺少的新dll。到目前爲止其上市的MSVCRT.dll MPR.dll和IESHIMS.dll。 IESHIMS是一個IE8 DLL,我的程序不使用它,所以爲什麼它依賴於它我不知道編輯:和WER.dll – caleb 2011-04-13 20:56:07

+0

因爲有時*其他* dll取決於你可能不直接使用的那個。例如,有時我發現OpenGL庫依賴性,而我根本沒有使用它。 Dependency Walker可以顯示dll的依賴關係,而依賴關係則依賴於您的應用程序。當你無意中將你的應用與一個你並沒有真正使用的庫聯繫起來時,可能會出現這種情況,例如一個爲你創建項目的嚮導就放在那裏。 – Barbaris 2011-04-13 21:14:49

0

你需要的是編譯器提供的再發行組件包,準確地這一個的那些C++運行時的DLL!其他的redist軟件包不需要工作,因爲嵌入在需要精確版本的可執行文件中的清單(通過並排彙編目錄C:\ Windows \ SxS中的二進制文件的散列值進行檢查)

因此,您對於可再發行組件是正確的,但你需要一個與編譯器一起安裝的,而不是來自互聯網的最佳猜測。確切的版本可以在清單文件(XML)來看待

相關問題