[System.Runtime.InteropServices.DllImport("Sign64.dll", CharSet = CharSet.Auto)]
public static extern uint Sign(IntPtr src, int srcLen, IntPtr sign, ref int signLen,
[In] [MarshalAs(UnmanagedType.LPStr)] string pwd);
////////////////////////////////////////////////////////////
var inputMsg = System.Text.Encoding.Default.GetBytes(message.Text);
var inputMsgPtr = Marshal.AllocHGlobal(inputMsg.Length);
Marshal.Copy(inputMsg, 0, inputMsgPtr, inputMsg.Length);
var outputMsg = new byte[128];
var outputMsgPtr = Marshal.AllocHGlobal(outputMsg.Length);
Marshal.Copy(outputMsg, 0, outputMsgPtr, outputMsg.Length);
int outputLen = 0;
var res = CEBSign.SignClient.Sign(inputMsgPtr,
inputMsg.Length,
outputMsgPtr,
ref outputLen,
password.Text);


1, C#的项目不是64位的。
如图所示,Solution是x64不代表Project是x64。请确保c#项目是x64或AnyCPU且没有勾选Prefer 32bit。
2,C++的dll不是64位的。
可以使用dll denpendency查看