1

LoadLibrary を介して C# dll をロードしようとしています。正常にロードできます。この dll で定義されているメソッドと型を使用できるように、この dll に GetProcAddress を使用する方法を教えてください。

前もって感謝します!!!

4

2 に答える 2

1

編集

1 - この問題の最善の方法は COM です。AssemblyInfoアセンブリを COM ( ) として公開するように設定する必要がありますComVisible(true)。このマイクロソフトの提案を参照してください。

2 - bitlocker を備えた Windows Vista 以降を使用している場合は、BitLocker便利です。

3 - ただし、COM を使用できない場合は、code-project でこれを確認してください。

于 2012-07-11T05:56:49.013 に答える
0

このリンクによると:

http://social.msdn.microsoft.com/Forums/br/vcmfcatl/thread/cadd6150-de10-47c5-bd5c-a356741c36b3

マネージド DLL にはエクスポートがないため、GetProcAddress は常に NULL を返します。

そうは言っても、アンマネージ コードからマネージ コードにアクセスするためのより良い方法があります。アンマネージ アセンブリの周りに C++/CLI ラッパーを作成する必要があります。その後、アンマネージ ラッパー関数内からマネージ呼び出しをエクスポートできます。

クラス内のマネージド関数の 1 つA

public static void Foo() {}

C++ コードがあるかもしれません:

DLLEXPORT void FooThunk() {
    A::Foo();
}

PS: 誰かが C++/CLI に慣れている場合は、私の回答を編集して、そのようなラッパーのより良い例を含めてください。

于 2012-07-11T05:57:42.647 に答える