我挣扎了一会儿,还是没能想出如何编写代码在C#侧C#的PInvoke与C结构包含函数指针
C++ DLL
typedef void (WINAPI *P_HelloWorld)(void);
typedef struct {
P_HelloWorld pHelloWorld;
}FUNC_PARAM;
void Func4(FUNC_PARAM* pFunc)
{
pFunc.pHelloWorld();
}
C#方:
public delegate void P_HelloWord();
[StructLayout(LayoutKind.Sequential)]
public struct FUNC_PARAM
{
public P_HelloWord pHelloWorld;
}
[DllImport("EMV_DLL.dll")]
public extern static void Func4(FUNC_PARAM[] pFunc);
void main()
{
FUNC_PARAM g;
g.pHelloWorld = new P_HelloWord(this.myHelloWorld);
Func4(new FUNC_PARAM[] { g });
}
void myHelloWorld()
{
MessageBox.Show("My Hello World");
}
上面的C#代码不起作用,当执行Func4函数时,它会抛出内存异常。
有人可以帮助我吗?
您的C++代码不能编译。你的C#代码有一个无效的main。请你可以发布真实的代码。请注意,'pFunc'参数不是一个数组。 –