我在尝试dll
从我的应用程序中使用非托管代码时遇到了一些困难(用 C# 框架 4.0 编写)。我正在使用dll
导入如下
[DllImport(@"C:\MGW_SDK.dll", EntryPoint = "fInicializaSDK")]
public static extern int fInicializaSDK();
奇怪的是,当从我的开发环境(Windows XP)调用它时,它工作得很好,但是在生产服务器(Windows7)上它会产生以下异常:
System.DllNotFoundException
: 无法加载 DLL' C:\MGW_SDK.dll'
: 找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)在Comtpaq.AdminPack.SDKWrapper.fInicializaSDK()
:第 30 行Comtpaq.AdminPack.AdminPaqRepository.InitializeSDK()
C:\Work\AgroIn\AdminPaqRepository.cs
我已经运行了Dependency Walker,它显示以下依赖项存在冲突:C:\windows\system32\SHLWAPI.DLL
我已经尝试将其复制dll
到我的部署目录
MGW_SDK.dll
开启(如c:\
路径所示)
我已经安装了 C 运行时库
我还注意到一些有趣的东西:在异常上,开发路径正在显示C:\Work\AgroIn\AdminPaqRepository.cs:line 30
这里还有什么问题?
编辑
extern
我只用我使用的一种/dllimport
方法构建了一个小型控制台应用程序,MGW_SDK.dll
并且没有问题地运行它(没有DllNotFoundException
任何问题),所以这似乎与我正在构建的应用程序(WCF 服务)有关。此服务托管在 WAS 上,但我仍然无法找到问题所在。