マネージド コード (C# で記述) を使用する C++/CLI DLL があります。純粋な C 関数を DLL からエクスポートしたいと考えています。これは、 and を使用してアンマネージ コードから呼び出されLoadLibrary
ますGetProcAddress
。
エクスポートされた関数では、インスタンスを作成し、C# クラスの 1 つのメソッドを呼び出すだけです。だから私はこれを試しました:
extern "C" __declspec( dllexport ) int __stdcall DoWork(
const wchar_t* Param1,
int Param2,
void* Param3)
{
WorkerNamespace::ManagedClass1 worker;
return worker.DoWork( gcnew String(Param1), Param2, IntPtr( Param3 ) );
}
正常にコンパイルされますが、実行するとdumpbin CompiledDll.dll /exports
、エクスポートされた関数はありません。
関数宣言の前に追加しようとしまし#pragma unmanaged
たが、本体内でマネージド型を使用するとエラーが発生します。
関数の本体を空のスタブ ( のみreturn 1;
) とに置き換えても#pragma unmanaged
、関数はまだに表示されませんdumpbin
。それで、私は何を間違っていますか?C++/CLI クラス ライブラリ プロジェクトから C 関数をエクスポートするにはどうすればよいですか?