如何在你的軟體中實時編譯並執行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...