假设想在某一vc开发的程序运行时输入一段c++程序,然后执行这个输入的c++程序,该怎么做呢?是不是要调用c++编译器啊?怎么调呢?调什么编译器呢?对那段输入的c++程序有什么要求么?

解决方案 »

  1.   

    你可以把你自己的程序想象成一个简单的编译器,用户编辑完源代码后肯定是需要编译链接成可执行文件后才能运行程序的。所以,在你的程序中可以调用编译命令,比如命令行下的cl.exe,前提是需要设定好一些环境变量等,cl命令好像还有些参数。
      

  2.   

    还不太明白,
    其实我做的这个东西是一个组态软件,就象力控和MCGS似的,用户在我的程序这个平台上定义一些变量之后,做成.exe文件,当这个.ext文件执行时,才在内存中真的定义这个变量,给它开辟出一块空间来,那么这个.exe文件里是不是也得调用编译器啊?楼上的说的那个命令具体应该怎么写呢?怎么把这个命令放到我的程序开发出来的那个.exe里呢?放在什么位置?
      

  3.   

    这个命令必须安装了VC才有的,其实就是vc的编译链接程序啊。你在Microsoft Visual Studio\VC98\Bin 可以看到cl.exe的
      

  4.   

    我觉得这种情况可以做一个解释程序,解释执行用户输入的参数,如果调用编译器必须要在对方的机器上装VC,同时还要提供你的程序的OBJ文件,太麻烦了
      

  5.   

    做成解释程序更麻烦,等于需要自己写一个编译器了。如果用户的程序不需要调用到你程序中的函数的话,我觉得可以编译成一个动态链接库,把用户的所有功能实现都在一个函数中实现,然后在程序中用LoadLibrary装载用户的函数就行了。这样不需要obj文件的.如果用户的代码变化不是很大的话,可以在用户写完之后,在程序中自己加入一些头文件包含之类的东西,然后另存为一个CPP文件,再调用CL 来编译。具体怎么使用cl,打入cl/?不是把全部使用方法都显示出来吗?你仔细研究一下。
      

  6.   

    感谢二位了,我其实是刚刚才学用vc的,所以这两种思路大概都明白了,只是具体的还不太明白,请问有哪本编译方面的书比较好吗?还有vc在这方面的资料,我还是先看看学习学习吧!
      

  7.   

    对了,dll文件中的程序是谁来编译的呢?不会是那个cl编译器吧?那是什么呢?
      

  8.   

    生成Makefile的工程,想用什么编译器都行。
      

  9.   

    是有那么一个工程在vc里,可是怎么用呢?是不是要象生成dll文件一样除了添加要用到的.cpp和.h文件还要写个特殊的象.dll里的.def文件一样的东西啊?应该怎么写呢?在.cpp和.h文件里还要添加什么东西吗?另外这个东西怎么用啊?我知道.dll是调用函数了,它呢?
      

  10.   

    你可以看看devc++的源代码,它是用delhpi写的,用的好像是gc编译器。
      

  11.   

    看你的问题,不象是用到编译器这个东西,你的意思是说你想在你的程序中执行用你的程序输入的C++的代码对吗?而不是把这段程序生成一文件,然后再调用编译器和连接器把这段代码生成为机器代码,最后再单独执行,对吗?如果是后一种情况,比较好办,你只需要把编译器和连接器的相关文件(如辅助dll、c++头文件和库等等)和你的可执行文件放到一起就可以了,而不用再单独安装VC。前一种情况,你的程序既是一个编译器,又是一个虚拟器,最好的方法你把你的程序做成一个解释执行的解释器(或者叫虚拟机好了)。
      

  12.   

    newlife2002_313(永恒新生):
    除了刚才怎么用的问题,我刚在别的地方看到好象makefile的工程是用nmake来编译的啊,那个编译器是vc的么?还是系统自带的?
    yuanque(无心快语):
    实在抱歉,我真的很菜,所以没听懂,devc++是什么啊?gc是vc还是谁的编译器,它能编译什么程序c,c++,pascal?
      

  13.   

    www.bloodshed.net有devc++源代码下
    gc是c/c++编译器,unix/linux下内嵌的,GNU的
      

  14.   

    我以前用过工控,也向别人请教过,现在的工控软件比如世纪星,MCGS什么的,都是采用解释执行的方式,也就是说你必须自己写一个解释器,因为工控中的可能情况太多了