[問題]請問有關DllImport的問題

看板C_Sharp作者 (~咖啡癮君子~)時間17年前 (2009/04/27 09:02), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
各位好: 小弟要再.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
[DllImport("tcl84.Dll", EntryPoint = "Tcl_Eval")]
04/27 14:47, 2F
文章代碼(AID): #19zGGyZg (C_Sharp)