[問題]請問有關DllImport的問題
各位好:
小弟要再.Net中執行Tcl script , 用了tcl84.DLL這個檔案 , 主要呼叫的定義如下:
[DllImport("tcl84.Dll", CharSet = CharSet.Unicode)]
public static extern int Tcl_Eval(IntPtr interp, [In] byte[] script);
public int evalScript(string script)
{
// if (hused) gch.Free();
Encoder d = Encoding.UTF8.GetEncoder();
char[] schars = new char[script.Length];
script.CopyTo(0,schars,0,script.Length);
int ilen = d.GetByteCount(schars,0,script.Length,true);
byte[] sbytes = new byte[ilen+1];
d.GetBytes(schars,0,script.Length,sbytes,0,true);
sbytes[ilen] = 0;
GCHandle gch = GCHandle.Alloc(sbytes,GCHandleType.Pinned);
// hused = true;
int ret = TclAPI.Tcl_Eval(interp,sbytes); //錯在此行
gch.Free();
return ret;
// return TclAPI.Tcl_EvalObjEx(interp,getTclObject(script),0);
}
string script就是我的tcl命令 , 當script = "source c:/test.tcl";
在 TclAPI.Tcl_Eval(interp,sbytes); 便會出現以下訊息
'System.AccessViolationException' 的未處理例外狀況 , 嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。
而且在console端出現一大推的?號 , 這行命令我確定是不會有問題的 , 而且這也是基本上有支援的
不曉得DllImport是不是有其他的參數可以設定或是怎麼樣 , 還是這是本身dll檔的問題
請高手解惑 , 小弟感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.131.208
→
04/27 14:46, , 1F
04/27 14:46, 1F
→
04/27 14:47, , 2F
04/27 14:47, 2F