このメソッドを C++ プロジェクト内からエクスポートしました
#define EXTERN extern "C"
#define DLL_EXPORT __declspec(dllexport)
EXTERN DLL_EXPORT unsigned int BattleManager::ProcessBattleInEntityProcess() {
....
}
dumpbin を使用して、そのメソッドの次のマングル名を取得します
?ProcessBattleInEntityProcess@BattleManager@Skill@Entity@@QAEHXZ
ただし、.NET 4.5 プロジェクトにメソッドをインポートすると、エラー 127 が発生します。
nativeCallbackName = "?ProcessBattleInEntityProcess@BattleManager@Skill@Entity@@QAEHXZ";
IntPtr _procAddress = NativeAPI.GetProcAddress(_nativeCallbackDLL, nativeCallbackName);
if (_procAddress == IntPtr.Zero)
{
Console.WriteLine("NULL ADDRESS for {0}", nativeCallbackName);
Console.WriteLine(Marshal.GetLastWin32Error());
return;
}
これは抽出されたコードの一部に過ぎず、他の方法は問題なく機能します。