C 動態解析編譯程式(記憶體)

2021-06-09 03:05:32 字數 1208 閱讀 1485

//獲取命令內容;

string _strcommand = dbcommon.getassemblevalue((sender as toolstripmenuitem).tag.tostring(), 5);

//編譯器初始化

icodecompiler comp = (new csharpcodeprovider().createcompiler());

//編譯器引數初始化

compilerparameters cp = new compilerparameters();

//載入使用的動態庫引數

cp.referencedassemblies.add("system.dll");

cp.referencedassemblies.add("system.data.dll");

cp.referencedassemblies.add("system.xml.dll");

//不生成可執行程式檔案

cp.generateexecutable = false;

//是否在記憶體中輸出

cp.generateinmemory = true;

//字串生成

stringbuilder code = new stringbuilder();

//加入引用單元

//編譯提交

compilerresults cr = comp.compileassemblyfromsource(cp, code.tostring());

//判斷是否編譯出錯。

if (cr.errors.haserrors)

msgbox.errormsg("動態編譯", error.tostring());

}//獲取已編譯程式集

assembly assembly = cr.compiledassembly;

//獲取例項

object _compiled = assembly.createinstance("smart._smartvisualmachine");

//返回編譯後的方法。

methodinfo mi = _compiled.gettype().getmethod("executevm");

//呼叫函式

mi.invoke(_compiled, null);

好像很多沒有引用到~ 只是基本的單元~ 對dll集不太了解~

解析程式與編譯程式

所謂解釋程式是高階語言翻譯程式的一種,它將源語言 如basic 書寫的源程式作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程式。就像外語翻譯中的 口譯 一樣,說一句翻一句,不產生全文的翻譯文字。這種工作方式非常適合於人通過終端裝置與計算機會話,如在終端上打一條命令或語句,解釋程式就立即將此語...

C 編譯程式時的記憶體分配

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 程式執行時由編譯器自動分配,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。程式結束時由編譯器自動釋放。2 堆區 heap 在記憶體開闢另一塊儲存區域。一般由程式設計師分配釋放,若程式設計師不釋放,程式結...

GCC編譯程式

gcc gnu compiler collection 是linux下最主要的一種編譯工具。gcc編譯格式 gcc 選項 源檔名 選項 目標檔名 採用預設得方式編譯原始檔,系統會生成a.out可執行檔案 採用顯式編譯成目標檔案,在編譯成可執行檔案 gcc c hello.c 生成hello.o gc...