无法在某些PC上运行c#应用程序(使用c ++ dll)

时间:2011-02-14 13:21:53

标签: c# c++ visual-c++

我们创建了一个调用c ++ dll(sdbm.dll)的c#应用程序。除了一些PC之外,它在大多数PC上都能正常工作。 dll是使用VC ++ 2008创建的,应用程序是在VC#2005中完成的。以下是从C#应用程序调用dll函数时发生的错误。

一台PC发生错误如下

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

无法加载sdbm.dll:此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题(HRESULT异常:0x800736B1)

第二台PC出现错误

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

错误签名

Appname:app.exe Appver:1.0.0.0 Modname:msvcr90.dll Modver:9.0.30729.4148 Offset:0002fc96

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

正如其他人在他们的评论中已经说明的那样,你的sdbm.dll的依赖性似乎是一个问题。找出根本原因的最简单方法是获取DependencyWalker的副本并将sdbm.dll丢入其中。首先在没有任何问题的情况下运行的机器上,然后在其中一台有问题的机器上启动DependencyWalker以查看它的输出。

它为您提供了有关在当前计算机上找不到的DLL的一些信息。你带领你到有问题的图书馆。

几乎总是问题是缺少Visual C ++ Redistributable Package(200520082010)或者您的库被编译并部署为调试版本。在这种情况下,它将链接到例如调试版本。 mfcxx.dll使用mfcxxd.dll。但是这些调试版本只与相应的SDK(或Visual Studio)一起安装,而不是与重新分发包一起安装。因此导致用户机器上的问题,但不是开发人员机器。