我试过看类似的问题,但没有找到运气。我只是对如何从我创建的可视 C++ dll 形成这个 dllImport 标记感到困惑。
原型是:
extern "C" __declspec(dllexport) int WS_CreateComm(char *cAddress,void *Obj, void (*LogFunc)(void *, const char *, int, int, const char*, const char*, int, unsigned int))
我将如何将它导入我的 C# 类?
更新:
这是我到目前为止所得到的:
delegate int CFuncDelegate(IntPtr Obj, string cErrorText, int iErrorLevel, int iTPM, string cFile, string cFunc, int iUserId, UInt16 iLineNumber);
[DllImport("WatchService2DLL.dll")]
public static extern void WS_CreateComm(string cAddress,void* Obj,CFuncDelegate func);
public static void Function(IntPtr CFunC, IntPtr Obj, string cErrorText, int iErrorLevel, int iTPM, string cFile, string cFunc, int iUserId, UInt16 iLineNumber)
{
CFuncDelegate func = (CFuncDelegate)Marshal.GetDelegateForFunctionPointer(CFunC,typeof(CFuncDelegate));
int rc = func(Obj,cErrorText,iErrorLevel,iTPM,cFile,cFunc,iUserId,iLineNumber);
}
这个实现正确吗?我现在究竟如何调用 WS_CreateComm?