VSで新しいWin32プロジェクトを作成し、この目的でダイナミックライブラリ(* .dll)を選択しました。
メインファイルにいくつかのエクスポート機能を定義しました:
__declspec(dllexport)
int TestCall(void)
{
int value = 4 / 2;
std::cout << typeid(value).name() << std::endl;
return value;
}
__declspec(dllexport)
void SwapMe(int *first, int *second)
{
int tmp = *first;
*first = *second;
*second = tmp;
}
ダンピン/exportsを見ると、次のようになっています。
ordinal hint RVA name
1 0 00001010 ?SwapMe@@YAXPEAH0@Z
2 1 00001270 ?TestCall@@YAHXZ
私は次のようにC#バージョンで呼び出しています:
[DllImport(@"lib1.dll", EntryPoint = "?TestCall@@YAHXZ",
CallingConvention = CallingConvention.Cdecl)]
static extern int TestCall();
エクスポートされたメソッドを使用する正しい形式ではありません。C ++ dllプロジェクトでエクスポートメソッドのそのような名前を生成できなかったのはどこですか?