私はこれを学習の瞬間としてやっています。私がここで何をやっているのか分かりません。このシナリオでは、私がC++についてよく知らないことに言及する価値があるかもしれません。C#からの呼び出しを意図したC++の記述ですか?
C#では、user32.dllや他のDLLの内容を取り込むのに、DllImport
を使いましたが、他の半分(C++の半分)これを実現するために実装されています。私が持っている
C++コードはシンプルで、ちょうど呼び出しが正常に通過したことを確認する:
#include <iostream>
using namespace std;
__declspec(dllexport) void HelloWorld() {
cout << "Hello, World" << endl;
}
私は__declspec(dllexport)
の重要性があるかわからないが、私はcouple上でそれを見てきましたwebsitesはその重要性にあまり触れていませんでした。私はC++ DLLをコンパイルし、C#プロジェクトでそれを入れて、それはbinフォルダにコピーしていますよ
[DllImport("TestDLL.dll")]
static extern void HelloWorld();
static void Main(string[] args) {
HelloWorld();
}
:
私のC#が前に私がやった前回DllImport
s以下の非常に異なるものではありません。 C#プロジェクトを実行すると、HelloWorld()
のメイン関数内でEntryPointNotFoundException
が呼び出されます。
私の推測では、C++コードまたはC++プロジェクトのコンパイルフラグを変更する必要があります。現在、 "Use of MFC"は "Use Standard Windows Libraries"に設定されており、ATLまたはCLRは使用されません。どんな助けでも大歓迎です。