14

C#で記述された.netアセンブリがあり、アセンブリからネイティブC関数をエクスポートしようとしています。

「プラグイン」フォルダにあるDLLに対して「LoadLibrary()」を実行するアプリケーションがあります。DLLをロードした後、アプリケーションは「GetProcAddress」を実行して「Register」という名前の関数を探します。アプリケーションは、この関数がC呼び出し規約に従うことを期待しています。

.netアセンブリから「Register」という名前の関数をエクスポートして、このアプリケーションのプラグインシステムに正常に接続できるようにするにはどうすればよいですか?

ありがとう、アンドリュー

4

4 に答える 4

11

このツールを使用します。

于 2011-05-13T14:57:40.653 に答える
3

Managed C ++で.Netライブラリを作成すると、「ネイティブ」メソッド/関数をエクスポートできます。

于 2011-06-18T16:04:30.163 に答える
1

残念ながら、Microsoftはこの機能をサポートしていないため、これらのメソッドを公開するには、ビルド後にmsilを変更する必要があります。一人の男がcodeprojectまたはここで合理的な解決策を示したのでそれは可能ですが、それはビルド後のステップを必要とし、その後あなたはあなた自身です。ただし、このハックが.net4.0以降で機能するかどうかはわかりません。CLRサポートはすでに存在するため、Microsoftが私たちに耳を傾け、C#でこの単純な機能をサポートすることを願っています。

于 2011-07-07T16:17:31.577 に答える
0

必要なのはReverseP/Invokeです。C#dllにC関数を実際に埋め込むことはできません。つまり、Cで実際に実装された関数を意味する場合は、リンク先のページにあるチュートリアルに従って、アンマネージC /C++コードで呼び出すことができるDLLエクスポートを作成できます。 。

于 2011-05-13T14:55:52.220 に答える