這是我的C++代碼:
這個函數被導出到我的DLL中。如何掛鉤託管函數內的非託管函數?
EXPORT set_hook(fnc_public_hook hook){
public_hook = hook;
}
現在,如果我從非託管代碼把它掛像下面的一切工作正常。
set_hook(my_fnc);
現在被稱爲在我的DLL my_fnc
每一個事件之前,所以我可以做一些數據預處理中。
問題是我不知道如何在.NET中做到這一點。
如何獲取.NET函數指針?如何在每個事件之前使用set_hook()
來調用我的.NET函數?
只需使用'Marshal.GetFunctionPointerForDelegate'。但是請注意,儘管您需要保留對委託的參考,否則它將收集垃圾。 – Luaan
@Luaan我想你誤會了我。不僅我想發送我的.NET函數指針,我希望C++調用我的.NET函數。 –
您誤解了Luaan,只要您調用public_hook(),您的C++代碼將*調用.NET代碼。 –