在C#中如何将C语言编写的cpp文件编译为exe可执行文件

问题描述

由于老师的要求,在C语言编完主程序后需要c#搭建个界面。现在我有一个cpp源程序代码,请教在c#中如何实现点击一个按钮将其编译链接为exe。方便利用System.Diagnostics.Process.Start直接调用。初学c#,希望大家能具体讲讲。值的注意的是,我的C#平台仅为了实现功能的整合,所以把c转换为dll调用的方法不考虑

解决方案

解决方案二:
功能的整合为什么要编译C的源码呢?难道你想做C的编译器吗?如果只是做界面的话把C编译成动态链接库用C#调用就可以了
解决方案三:
引用1楼wddw1986的回复:

功能的整合为什么要编译C的源码呢?难道你想做C的编译器吗?如果只是做界面的话把C编译成动态链接库用C#调用就可以了

当然没您说的这么高端,主要是因为我的思路是通过C#界面输入一些值重写原来的cpp,比如说我文本框输入5,可以将C语言中的inti=10修改为i=5,但是重写的cpp程序需要再次编译链接为exe,然后再调用该exe文件,这样就需要用c#完成编译链接生成exe的功能,实际上c#只是我完成目的的手段
解决方案四:
你可以把cpp文件保存起来,就用System.Diagnostics.Process.StartC的编译器,以cpp文件路径为参数
解决方案五:
先找到vc的编译器所在位置,我假设在x:vs201xcl.exe然后源代码的位置,假设是y:srca.cpp输出的位置假设是z:out.exe执行Process.Start("x:\vs201x\cl.exe","y:\src\a.cpp/Fe:z:\out.exe");一切正常的话就能生成out.exe
解决方案六:
你直接用VC++编译不行吗?
解决方案七:
引用3楼yuankaiwsl的回复:

你可以把cpp文件保存起来,就用System.Diagnostics.Process.StartC的编译器,以cpp文件路径为参数

C的编译器是指什么呢?抱歉基础不太过关。可以请您具体写一下代码吗?例如我的一个在D盘根目录里的名为aaa.cpp的文件,需要C#运行什么代码才能将其编译链接为exe程序,另外编译的exe文件的位置在哪里呢?
解决方案八:
我记得刚学C时,都是用命令行编译,turboC下用命令行:tcchello.c在C#中就可以System.Diagnostics.Process.Start(tccPath,cppFilePath)具体我也忘了,你可以这个思路来。
解决方案九:
引用4楼shingoscar的回复:

先找到vc的编译器所在位置,我假设在x:vs201xcl.exe然后源代码的位置,假设是y:srca.cpp输出的位置假设是z:out.exe执行Process.Start("x:\vs201x\cl.exe","y:\src\a.cpp/Fe:z:\out.exe");一切正常的话就能生成out.exe

您好,我参考您的方法在运行程序时指令框结果一闪而过也并没有生成编译后的exe文件我的指令如下System.Diagnostics.Process.Start("D:\application\VS\VC\bin\cl.exe","D:\LSTProgram\C\rf.cpp/Fe:D:\LSTProgram\C\out.exe");

我的源程序也可以正常编译,不知问题出现在那里
解决方案十:
开个cmd,试试这条命令什么错误
解决方案十一:
不知道您说的是这个意思吗?我把程序"D:\application\VS\VC\bin\cl.exe","D:\LSTProgram\C\rf.cpp/Fe:D:\LSTProgram\C\out.exe"复制到命令指令框后显示
解决方案十二:

解决方案十三:
最好是一次性编译好,怎么要在启动时才编译?c也可以做界面啊
解决方案十四:
引用11楼xuzuning的回复:我设置环境变量时在指定的路径下并没有找到相应的VC文件夹,不知道这是否和我用的是win10系统与vs并没有安装到c盘有关。出现的那个fatalerrorLINK1181:无法打开输入文件”,.obj”也不知道是什么错误
解决方案十五:
应该是你安装vs的时候没有选择VC++重新运行安装程序,补上就是了
解决方案:
引用2楼zuiai214的回复:

Quote: 引用1楼wddw1986的回复:
功能的整合为什么要编译C的源码呢?难道你想做C的编译器吗?如果只是做界面的话把C编译成动态链接库用C#调用就可以了

当然没您说的这么高端,主要是因为我的思路是通过C#界面输入一些值重写原来的cpp,比如说我文本框输入5,可以将C语言中的inti=10修改为i=5,但是重写的cpp程序需要再次编译链接为exe,然后再调用该exe文件,这样就需要用c#完成编译链接生成exe的功能,实际上c#只是我完成目的的手段

直接用C开几个函数修改i的值,C#掉一下就可以了,非要去编译干啥,我劝你去好好问问你老师,别自己走死胡同里去。

时间: 2024-10-29 22:35:28

在C#中如何将C语言编写的cpp文件编译为exe可执行文件的相关文章

你知道哪些苹果自家应用采用 Swift 语言编写吗?

TIOBE 采用搜索引擎评级追踪编程语言的受欢迎程度.在今年1月,Swift 编程语言超过了 Objective-C,成为 TIOBE 中第十四流行的语言.Swift 在去年12月正式开源,受欢迎程度也受到开源影响而增长.开发者对 Swift 编程语言的兴趣也越来越大.虽然苹果推出了 Swift 编程语言,但公司似乎并没有大规模应用. 开发者 Ryan Olson 表示,iOS 9.2 中唯一采用 Swift 语言编写的应用就是:计算器.计算器 app 完全采用 Swift 语言编写,其中22个

用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值

在大小写敏感的前提下,用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值. 如果substr完全包含在mainstr中,请计算出索引值.否则,返回-1. 具体代码如下: findstr.c /** Author: snowdream <yanghui1986527@gmail.com> Data: 2012.03.05 Description: 假设一个主要字符串"Hello World!",和一个子字符串"World". 在大小

c-如何用C语言编写代码实现:文件中一行的开头是否与正则表达式^$w_ang[.* 相匹配

问题描述 如何用C语言编写代码实现:文件中一行的开头是否与正则表达式^$w_ang[.* 相匹配 如何用C语言编写代码实现:文件中一行的开头是否与正则表达式^$w_ang[.* 相匹配,,,怎么写代码啊,,求大神们指点,,万分感谢!!!! 解决方案 正则表达式应该可以看做是字符串匹配吧

eclips语言中怎么样编写五子棋游戏?eclips语言编写五子棋人机对战怎么做?

问题描述 eclips语言中怎么样编写五子棋游戏?eclips语言编写五子棋人机对战怎么做? eclips语言中怎么样编写五子棋游戏?eclips语言编写五子棋人机对战怎么做? 解决方案 http://blog.sina.com.cn/s/blog_6caeccff0100pq31.html

用c语言编写的音频播放程序中的问题,注意这个是嵌入式程序

问题描述 用c语言编写的音频播放程序中的问题,注意这个是嵌入式程序 我得到一个用c语言编写的音频播放程序,但其中有两段代码看不懂,请各位大神帮帮忙,程序如下 #define mru_swap_16(x) ((unsigned short)( (((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | (((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))

请教怎么用vbs语言编写在弹出的“另存为”窗口中自动填入文件名,并打开相应文件。

问题描述 请教怎么用vb语言编写逐个在弹出的"另存为"窗口中自动填入文件名,并打开相应文件.

中文字符-如何用C语言编写一个简单的输入法程序,要求可以输入汉字。

问题描述 如何用C语言编写一个简单的输入法程序,要求可以输入汉字. 不太清楚汉字在计算机中是如何存储的,想知道例如微软的智能ABC以及搜狗输入法是怎样实现拼音拼写下的汉字输入. 解决方案 首先要有一个汉字的编码库,比如GB2312编写的是拼音输入法的话,还要建立一个拼音与汉字对应的数据库然后根据用户输入的拼音,提示出对应的汉字(汉字的优先顺序由数据库决定,同时还可以学习该用户的使用习惯)如果输入法还支持智能联想输入的话,还要加入词库(也有优先级),这样可以根据前一个字来推断出下一个可能的字 解决

Mysql C API编程:用C语言编写的Mysql编程接口

软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程. API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能. Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作. Mysql的安装 要进行Mysql编程首先要在充当Mysql服务器的电脑和

SOAP净化有线协议(三):用脚本语言编写服务

脚本 你是一个渴望永远站在技术最前沿的Java开发者吗?软件产业风云变幻,你渴望把握Web的未来,更重要的是,如何把自己数年的Java经验发挥到极致.要寻找这些问题的答案,你不必走得太远,答案就在于SOAP. SOAP(简单对象访问协议)是一种利用XML编码数据的有线协议,它为Java的平台无关性.可移植性带来了更高层次的协同操作能力.在这个关于SOAP的系列文章的第二篇中,我介绍了Apache SOAP.作为SOAP规范的实现之一,Apache SOAP简化了SOAP应用的构造.我们曾经用Ap