已知一个DLL文件包含以下函数请问我如何用C#调用?HANDLE WINAPI okOpenBoard(long *lIndex);
BOOL WINAPI okCloseBoard(HANDLE hBoard);
Long WINAPI okGetLastError();
Long WINAPI okGetBufferSize(HANDLE hBoard, void **lpLinear, \ DWORD *dwSize); 我是这么写的,可以出现了:
检测到 PInvokeStackImbalance
Message: 对 PInvoke 函数“OKTest!OKTest.Form1::okCloseBoard”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
这个错误。 [DllImport("OKAPI32.dll")]
public static extern bool okCloseBoard();
private void button1_Click(object sender, EventArgs e)
{
try
{
Form1.okCloseBoard();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
BOOL WINAPI okCloseBoard(HANDLE hBoard);
Long WINAPI okGetLastError();
Long WINAPI okGetBufferSize(HANDLE hBoard, void **lpLinear, \ DWORD *dwSize); 我是这么写的,可以出现了:
检测到 PInvokeStackImbalance
Message: 对 PInvoke 函数“OKTest!OKTest.Form1::okCloseBoard”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
这个错误。 [DllImport("OKAPI32.dll")]
public static extern bool okCloseBoard();
private void button1_Click(object sender, EventArgs e)
{
try
{
Form1.okCloseBoard();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public static extern long okOpenBoard(ref long lIndex);
[DllImport("OKAPI32.dll")]
public static extern bool okCloseBoard(long hBoard);
[DllImport("OKAPI32.dll")]
public static extern bool okGetLastError();
[DllImport("OKAPI32.dll")]
public static extern bool okCloseBoard(long hBoard,ref long lIndex,int dwsize);
“OKAPI32.dll”
呵呵。