0
我有一個名爲OMGICardDll.dll DLL,它與USB插件智能卡設備讀取來自卡非託管的DLL
在這裏,數據通信是,我使用的代碼:
public partial class Form1 : Form
{
[DllImport("OMGICardDll",EntryPoint="ReadName",ExactSpelling=true, CallingConvention = CallingConvention.StdCall,SetLastError=false)]
public static extern string ReadName();
//Form1 fm = new Form1();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
txtName.Text = ReadName();
}
}
當我點擊保存按鈕,我發現System.EntryPointNotFoundException
僅使用ExactSpelling如果你知道你在做什麼,用DUMPBIN.EXE /出口找到真正的名字。您無法按原樣調用此函數,當pinvoke編組器嘗試釋放返回的字符串時它會崩潰。返回類型必須是IntPtr,Marshal.PtrToStringAnsi()才能轉換。 – 2012-07-15 20:36:55