I have the following in my native code:
typedef void (__stdcall * HandlerCallBack)(float);
class ASSIMP_API NewProgressHandler : public ProgressHandler
{
HandlerCallBack CallBack;
public:
bool Update(float percentage = -1.f){
if (CallBack) CallBack (percentage);
return true;
}
void SetCallBack (HandlerCallBack callback) {
CallBack = callback;
}
};
void Importer::SetProgressHandlerCallBack (HandlerCallBack CallBack) {
NewProgressHandler* pNewHandler = new NewProgressHandler ();
pNewHandler->SetCallBack (CallBack);
ProgressHandler* pHandler = pNewHandler;
SetProgressHandler (pHandler);
}
I need to call
SetProgressHandlerCallBack (HandlerCallBack CallBack)
from c# code, so I do the following:
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void HandlerCallBack([MarshalAs(UnmanagedType.R4)]float percent);
[DllImport("my.dll")]
public static extern void SetProgressHandlerCallBack ([MarshalAs(UnmanagedType.FunctionPtr)]
HandlerCallBack callBack);
public void AssimpCallBack ([MarshalAs(UnmanagedType.R4)]float percent) {
Debug.Log (percent);
}
void SomeFunction () {
HandlerCallBack cb = new HandlerCallBack (AssimpCallBack);
SetProgressHandlerCallBack (cb);
}
but I'm getting an exception,
SetProgressHandlerCallBack
at (wrapper managed-to-native) ModellInstantiator:SetProgressHandlerCallBack (ModellInstantiator/HandlerCallBack)
and I cant figure out what am I missing.
Aucun commentaire:
Enregistrer un commentaire