我在尝试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 上,但我仍然无法找到问题所在。
