2011-02-14 34 views
1

我們創建了一個調用C++ dll(sdbm.dll)的c#應用程序。除了一些個人電腦外,它在大多數電腦上都能正常工作。該DLL使用VC++ 2008創建,應用程序在VC#2005中完成。以下是從C#應用程序調用dll函數時發生的錯誤。無法在某些PC上運行c#應用程序(使用C++ dll)

發生錯誤在一個PC是如下

================================== ===

無法加載sdbm.dll:此應用程序未能啓動,因爲該應用程序的配置incorrect.Reinstalling應用程序可能解決此問題(從HRESULT異常:0x800736B1)

錯誤第二PC發生

=====================================

錯誤簽名

APPNAME:APP.EXE Appver:1.0.0.0的modname:MSVCR90.DLL Modver:9.0.30729.4148偏移:0002fc96

任何幫助,將不勝感激

+0

看看計算機的應用程序事件日誌。 – weismat 2011-02-14 13:24:46

+2

這可能是MSVC運行時庫在不同系統上可用的問題嗎? – 2011-02-14 13:27:13

回答

2

當別人已經說過在他們的評論中,它似乎是與您的sdbm.dll的依賴關係的問題。找到根本原因的最簡單方法是,您應該得到DependencyWalker的副本並將sdbm.dll加入其中。首先在沒有任何問題的機器上運行,然後在有問題的機器之一上啓動DependencyWalker以查看其輸出。

它提供了一些有關在當前機器上找不到的DLL的信息。您會將您帶到有問題的圖書館。

幾乎總是存在缺少Visual C++可再發行組件包(200520082010),或者您的庫已作爲調試版本進行編譯和部署。在這種情況下,它將鏈接到例如通過使用mfcxxd.dll mfcxx.dll。但是這些調試版本只能與相應的SDK(或Visual Studio)一起安裝,而不能與再發行軟件包一起安裝。因此導致用戶機器出現問題,但不是開發者機器。

相關問題