我有一個問題傳遞一個託管空隙到一個c + + void。你知道如何正確地做到這一點嗎? 這裏是我的C++作爲參數傳遞無效與PInvoke無效
extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());
代碼獲取一個無效(__ CDECL * disph)()我的問題是我怎麼能傳遞一個簡單的空白()(例如公共靜態無效的顯示()) 到該C++無效。
我有一個問題傳遞一個託管空隙到一個c + + void。你知道如何正確地做到這一點嗎? 這裏是我的C++作爲參數傳遞無效與PInvoke無效
extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());
代碼獲取一個無效(__ CDECL * disph)()我的問題是我怎麼能傳遞一個簡單的空白()(例如公共靜態無效的顯示()) 到該C++無效。
你說的是傳遞函數指針吧? void
s沒有通過,因爲沒有什麼可以通過,因爲它是錯誤的,無效的。
如果我理解正確,你需要將一個指針傳遞給一個函數,該函數不接受任何參數並且不返回任何內容,對吧?我不是在Windows機器此刻所以這是未經測試,但這樣的事情應該工作:
public delegate void VoidFnDelegate();
public value struct MyDLL
{
[DllImport("MyDll.dll")]
static public void Display(VoidFnDelegate fn);
}
...
void SomeFn() { ... }
MyDll.Display(new VoidFnDelegate(SomeFn));
我開始的程序,但在它開始之前,它拋出一個異常說: 調用PInvoke函數'Game!Game.Graphics :: Display'已經失去了堆棧。這很可能是因爲託管的PInvoke簽名與非託管目標籤名不匹配。檢查PInvoke簽名的調用約定和參數是否與目標非託管簽名相匹配。 – user1418638
'()=>使用functionName()'? – nawfal