0

このメソッドを 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;
 }

これは抽出されたコードの一部に過ぎず、他の方法は問題なく機能します。

4

0 に答える 0