C++ DLL を使用し、.NET4.5 をターゲットとする Visual Studio 2012 で WPF を使用して C# アプリケーションを構築しました。C# プロジェクト用と C++ DLL プロジェクト用の 2 つのプロジェクトを実行しています。両方のプロジェクトを、同じフォルダー.exe
に C#.dll
用と C++ 用があるフォルダーにリリースしました。
それらが開発されたマシンでそれらを実行すると、すべて正常に動作します。を他のマシンで実行する.exe
と、次の例外がスローされます。
System.DllNotFoundException: DLL を読み込めません
同じフォルダにあるDLLを認識していません。
私は多くのことを試しましたが、何もうまくいかないようです。この投稿の解決策に従いましたが、何も機能しませんでした。
Dev マシンとターゲット マシンは同一です。Dev では Visual Studio 2012 がインストールされていますが、それが唯一の違いです。
コード:
C#:
[DllImport(@"Wireless.dll", EntryPoint = "?cert_exists@certificate@CertFuncs@@SAHHPBD@Z", CallingConvention = CallingConvention.Cdecl)]
static extern int cert_exists(int store, [MarshalAs(UnmanagedType.LPTStr)]string cert_str);
C++:
static int __declspec(dllexport) cert_exists(int type, LPCSTR cert_str);
アップデート:
ターゲット マシンに Visual Studio 2012 をインストールすると、すべて正常に動作します。削除すると、アプリケーションが再びクラッシュします。アプリケーションを機能させることができる VS の追加に関するアイデアはありますか?