如何在你的軟體中實時編譯並執行C C 源程式

2021-04-16 12:41:46 字數 1507 閱讀 5306

如何在你的軟體中實時編譯並執行c/c++源程式

當人們發布乙個軟體時, 往往需要提供一些外掛程式介面給oem進行二次開發,

同時提供若干dll庫或com元件給使用者呼叫.

在本人看來這些方法能解決一些問題, 但不夠靈活, 具有很多缺陷與限制.

這裡我給讀者提供乙個方法: 直接執行c/c++源程式!

執行c/c++源程式的函式是:

int yxb_runcppcode(char *codebuf,int codelen,int argc,char **argv);

引數codebuf,codelen

當codelen = 0時, codebuf指向乙個檔名,該檔案是c/c++源程式或yc執行**。

當codelen > 0時, codebuf指向乙個緩衝區, 該緩衝區存放c/c++源程式或yc執行**,

緩衝區長度為exe_len位元組。

當codebuf表示檔名時, 該函式將檔案讀入緩衝區並判斷它是否是yc執行**,

如果是則執行它, 執行完後返回0; 如果不是, 則編譯它, 若編譯出錯則將錯誤資訊

存入檔案c:/yc01/temp/y.err中並返回非0值, 若編譯通過, 則生成yc可執行**並執行它,

執行完後返回0。

當codebuf表示緩衝區時, 除無需將檔案讀入外, 執行過程與上述一樣.

argc, argv

這兩個形式變數將自動被傳給c/c++**中的main函式.

返回值0       yc_exe_ok          執行成功

1       yc_exe_notfound    檔案未找到

2       yc_exe_compileerr  源**有錯誤,編譯未通過

3       yc_exe_vererr      版本錯誤

例如: 你要執行的c/c++源程式是run.cpp, 其內容為:

void main(int argc,char **argv)

那麼在yc++中執行run.cpp的程式**為:

void main(int argc, char **argv)

如果在其它環境, 如vc6.0中, 實時執行run.cpp的程式**為:

#include 

void main(int argc, char **argv)

該例子需將下列幾個yc++檔案拷入源程式所在目錄:

yc01/yxbapi.dll        c/c++編譯器, 瀏覽器核心庫

yc01/yxbimg.dll       圖象, 動畫解碼庫

yc01/yxbext.dll        瀏覽器核心互動**庫       

yc01/yc.ah              編譯器標頭檔案包

yc01/yc.cmp           編譯器錯誤資訊

yc01/include/ycapi.h         用其它編譯器執行該例時所需標頭檔案

yc01/include/yxbapi.lib      用其它編譯器執行該例時所需庫檔案, 如vc6.0       

如何在你的軟體中實時編譯並執行C C 源程式

如何在你的軟體中實時編譯並執行c c 源程式 當人們發布乙個軟體時,往往需要提供一些外掛程式介面給oem進行二次開發,同時提供若干dll庫或com元件給使用者呼叫.在本人看來這些方法能解決一些問題,但不夠靈活,具有很多缺陷與限制.這裡我給讀者提供乙個方法 直接執行c c 源程式 執行c c 源程式的...

如何在你的應用中管理錯誤的頁面

code def rescue action in public exception logger.error rescue action in public executed case exception when activerecord recordnotfound,actioncontrol...

如何在應用程式中呼叫CMD並返回執行結果

如何在應用程式中呼叫cmd並返回執行結果 要求做乙個圖形介面的應用程式,輸入命令列的命令,在後台呼叫cmd程式執行該命令但不顯示dos命令列視窗,而且能實時顯示執行的結果。哪位知道怎麼處理?謝啦 void clikecmddlg onbtnexe startupinfo si process inf...