C#プロジェクトに追加したいDLLがありますが、いくつかの問題があります。まず、私のDLLはC++でコード化されており、エクスポートするための1つの関数のインタフェースがあります。DLLをいつ切り離すかを制御する方法
extern "C" __declspec(dllexport) char* sniff()
{
return ps.Sniff();
}
DLLが接続されているときにソケットを初期化するインスタンス「ps」があります。要は、エクスポートされた関数を呼び出すときに、このインスタンスを初期化する必要があるということです。私の問題は、私のC#プロジェクトでインポートするとき、私のDLLは明白な理由で分離され、私はもはや私のエクスポートされた関数を呼び出すことはできません。
私はC#の挙にこの構文を使用:
[DllImport(@"C:\Documents and Settings\Pat\Bureau\sniffoporn\Release\sniff.dll", EntryPoint = "sniff", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr sniff();
私がしようと試みたいくつかの重要な事柄:
- は、プロジェクトの参照でDLLをインポートします。そうではありませんすることはできませんので、 COMコンポーネント。
- は、ループ内の私のエクスポートされた関数呼び出しと同じ結果:
- は手動でのLoadLibrary、FreeLibraryのとのGetProcAddressを使用してDLLをインポート同じことが、DLLは取り外し前に少し長くするために装着されています。
私のDLLが切り離されている理由と、残りのプロセス寿命の間、どのように接続しておくことができるのかを知りたいと思います。
どうもありがとう
回答できません。 –
'私のDLLは明白な理由なしにデタッチされています。 '...あなたは例外を取得していますか?あなたはここに投稿できますか?あなたが 'detatched'で何を意味するのか分かりません... – SwDevMan81
これは例外ではなく、DLLがアタッチ/デタッチするときにMessageBoxを呼び出すだけです:' case DLL_PROCESS_ATTACH: \t \t ps.Connect(); \t \t MessageBox(NULL、 "p_attach"、 "IbeTheSee"、MB_ICONWARNING); \tケースDLL_PROCESS_DETACH: \t \t ps.Disconnect(); \t \tのMessageBox(NULL、 "P_DETACH"、 "IbeTheSee"、MB_ICONWARNING)は、そのが着脱場合 ' – patrickT87