我们创建了一个调用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
任何帮助将不胜感激
答案 0 :(得分:2)
正如其他人在他们的评论中已经说明的那样,你的sdbm.dll的依赖性似乎是一个问题。找出根本原因的最简单方法是获取DependencyWalker的副本并将sdbm.dll丢入其中。首先在没有任何问题的情况下运行的机器上,然后在其中一台有问题的机器上启动DependencyWalker以查看它的输出。
它为您提供了有关在当前计算机上找不到的DLL的一些信息。你带领你到有问题的图书馆。
几乎总是问题是缺少Visual C ++ Redistributable Package(2005,2008,2010)或者您的库被编译并部署为调试版本。在这种情况下,它将链接到例如调试版本。 mfcxx.dll使用mfcxxd.dll。但是这些调试版本只与相应的SDK(或Visual Studio)一起安装,而不是与重新分发包一起安装。因此导致用户机器上的问题,但不是开发人员机器。