2009-04-09 118 views
0

我的程序是用C#.NET 2.0編寫的,它使用的是使用Microsoft Visual Studio 2008 SP1以C++編寫的dll的外部函數。 如果我從程序所在的目錄中刪除了dll,程序就會在應該使用dll的時候崩潰,這是正常的。加載C++ dll時出現C#crash

但使用我的程序在同樣的地點同樣的錯誤,而無需移動dll.They所有可在用戶有C++可再發行2008年從>here<

是否發生,因爲我在.NET 2.0製作的節目,而不是的NET 3.5或它發生,因爲可再分發應該是一箇舊版本?

編輯:對我來說,程序運行良好。

>>new thread<<

+0

用戶不能正常工作的實際崩潰消息是什麼? – 2009-04-09 13:14:45

回答

1

它的版本很可能是錯誤的運行。確保你分配正確的。這些將始終在您的開發箱上工作,因爲運行時間在路徑中。爲了測試軟件,我使用了Windows XP虛擬機。我將虛擬機設置爲全新安裝,安裝我知道需要的組件(.NET框架等),然後運行我的安裝程序。您將遇到令人驚訝的設置問題。

+0

我只接受你的答案,因爲你提到VM Box.I使用過。請檢查我的新問題以獲取更多信息。 – 2009-04-09 18:31:54

0

你鏈接到看起來是從Visual Studio 2008。如果SP1的變化的原始版本的C++可再發行,我看得出來,導致崩潰。也許有用戶需要安裝的可再發行版本的更新版本?

0

在你的問題中,關於實際碰撞的可能性很小,這可能意味着任何很多事情。根據我對混合.NET和本地C++的經驗,並行(SxS)中可能會出現很多問題,尤其是如果DLL和.NET應用程序是使用不同版本的編譯器構建的。

您可能需要在本地機器上重現此問題以進行調試。

0

Dependency Walker可以很好地跟蹤這些類型的問題。你可以加載一個DLL,它會告訴你它的任何依賴關係是否不可用。有時,缺少的DLL不一定是問題(如果你不遵守這個代碼路徑),但它比猜測好得多。

0

在使用.NET 2.0或3.5的上下文中沒有區別。
查找範圍方法,你在C鏈接和導出功能++(如果非託管) 如果外部函數寫在託管C++,考慮簽署和dll的