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()
atComtpaq.AdminPack.AdminPaqRepository.InitializeSDK()
inC:\Work\AgroIn\AdminPaqRepository.cs
:line 30
私はすでにDependency Walkerを実行しました。これは、次の依存関係が競合していることを示しています。C:\windows\system32\SHLWAPI.DLL
dll
私はすでにそれを展開ディレクトリにコピーしようとしました
MGW_SDK.dll
オンです(c:\
パスが示すように)
C ランタイム ライブラリを既にインストールしています
また、いくつかの興味深い点にも気付きました。例外として、開発パスが表示されていますC:\Work\AgroIn\AdminPaqRepository.cs:line 30
ここで他に何が問題になる可能性がありますか?
編集
extern
私が使用する/dllimport
メソッドの1つだけを使用して小さなコンソールアプリケーションを構築し、MGW_SDK.dll
問題なく(まったくDllNotFoundException
)実行したため、これは構築中のアプリケーション(WCFサービス)に関連しているようです。このサービスは WAS でホストされていますが、まだ問題が見つかりません。