`
阿尔萨斯
  • 浏览: 4108465 次
社区版块
存档分类
最新评论

如何在你的软件中实时编译并执行C/C++源程序

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

如何在你的软件中实时编译并执行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)
{
MessageBox(NULL, "hello, world!", "YC01", MB_ICONHAND|MB_OK);
}

那么在YC++中执行run.cpp的程序代码为:
void main(int argc, char **argv)
{
YXB_RunCppCode("run.cpp",0, argc, argv);
}

如果在其它环境, 如VC6.0中, 实时执行run.cpp的程序代码为:

#include <windows.h><br>void main(int argc, char **argv)<br> {<br> HINSTANCE API_Modual = LoadLibrary("yxbapi.dll");<br> int (*YXB_RunCppCode)(char *codebuf,int codelen,int argc,char **argv);<br> YXB_RunCppCode = (int (*)(char *codebuf,int codelen,int argc,char **argv))<br>GetProcAddress(API_Modual,"YXB_RunCppCode");<br> YXB_RunCppCode("run.cpp",0, argc, argv);<br> FreeLibrary(API_Modual);<br> }</windows.h>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

该例子需将下列几个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/c++代码中条件编译部分的程序,帮助阅读源代码,生成好的tags

    网上众多的开源C/C++代码,因为跨平台的需要,参杂了许多的条件编译语句,对阅读源代码造成了不方便,而且用ctags等工具生成源代码的tags文件时会有些妨碍,本工具就是用来预处理这些条件编译的,将未定义的区域自动...

    编译原理PL/0源程序

    编译原理书本后面的源程序--PASCAL版

    C/C++程序设计学习与实验系统 V2008.13.part1

    课程设计指导、课程设计源程序、 Visual C++6.0中英文编译错误信息同步显示功能(并配有同步的60多个语法错误程序实例)、Turbo C++3.0常见编译错误信息、 Turbo C2.0 中英文编译错误信息同步显示功能、C语言专业词汇...

    编译:语法分析程序报告(源程序) c/c++

    编译原理 语法分析程序 c/c++编译原理 语法分析程序 c/c++编译原理 语法分析程序 c/c++

    c/c++程序设计学习与实验系统

    同时,为了便于C语言学习,加入C语言学习指导、入门程序实例、典型源程序、典型的函数算法,课程设计指导、课程设计源程序、 Visual C++6.0中英文编译错误信息同步显示功能(并配有同步的语法错误程序实例、修改方法...

    编译原理词法分析与语法分析的c++源程序代码

    编译原理词法分析与语法分析的c++源程序代码,本程序时模拟编译器的部分功能,即如何进行语法与词法的分析过程!

    C/C++程序设计学习与实验系统 2010.part1

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、二级 ...

    《C/C++程序设计学习与实验系统》

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、2004...

    C/C++程序设计学习与实验系统 2010.part2

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、二级 ...

    C_C++程序设计学习与实验系统 2010 part1

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、2004...

    C与C++程序设计学习与实验系统 2011.2

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、2004...

    C/C++程序设计学习与实验系统

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、2004...

    PL/0编译程序的语法分析实验报告

    PL/0源程序 //PL0.txt const a=10; var b,c; procedure p; begin c:=b+a end; begin read(b); while b#0 do begin call p;write(2*c);read(b) end end. //outputfile.txt constsym, ident, a eql, number, 10 ...

    C/C++程序设计学习与实验系统 2010.part3

    Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、二级 ...

    C与C++程序设计学习与实验系统.rar

    加入C语言学习指导、入门程序实例、典型源程序、典型的函数算法,课程设计指导、课程设计源程序、Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等已免费)、C语言专业...

    词法分析示例程序(C语言编写,针对PL/0语言)

    这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。 PL/0...

    PL/0编译程序C版本

    * 编译和运行环境 * Visual C++6.0,Visual C++.net and Visual C++.net 2003 * WinNT,Win2000,WinXP and Win2003 * 2gcc version 3.3.2 20031022(Red Hat Linux 3.3.2-1) * Redhat Fedora core 1...

Global site tag (gtag.js) - Google Analytics