| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3186 人关注过本帖
标题:生成EXE文件的原理?
只看楼主 加入收藏
小刀神
Rank: 1
等 级:新手上路
帖 子:69
专家分:5
注 册:2018-5-27
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:7 
生成EXE文件的原理?
C如何动态生成EXE可执行程序?
C开发桌面窗体程序,这个程序想要可以根据需求编译出.EXE可执行文件,这个EXE是个可执行的正常的程序。
这个功能应该如何开发?需要了解什么知识?
或者在已经使用VS2015编译生成好了EXE文件的情况下,如何修改EXE程序的图标、程序名称等信息?
搜索更多相关主题的帖子: 生成 EXE 文件 原理 编译 
2019-02-16 21:36
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:5 
你这问题甚是高级,我都没有考虑过...,不过,我也想借这个帖子问一个问题

我感觉自己把    C语言语法看得差不多了,是不是能做一些更加有意思的事情呢,一天天的做一些课后题也太无聊了,之前见有人能够编一个小游戏玩,比如贪吃蛇、俄罗斯方块,我现在有做这东西的实力了吗?还有,他们做游戏时用到了我从未见到过的windows.h,这东西语法书商并未涉及,我是不是还要看其他的书才能做像贪吃蛇这种游戏
2019-02-16 21:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
啥叫动态生成exe,完全听不懂
想了解这些东西,可以搜索一下编译原理

DO IT YOURSELF !
2019-02-17 09:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
windows.h主要就是面向窗口程序了,所说的脱离黑乎乎的控制台,

DO IT YOURSELF !
2019-02-17 09:09
小刀神
Rank: 1
等 级:新手上路
帖 子:69
专家分:5
注 册:2018-5-27
收藏
得分:0 
回复 3楼 wp231957
额……可能是我表达不清楚。
在C#中有动态编译,可以在已编译好的窗体程序中,使用动态编译,生成exe可执行文件。
2019-02-17 16:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
就是想通过你的程序编译一个源文件?你手工怎么编译,那么你程序就怎么做。
( C/C++的大部分编译器都特别大,如果你要求不高,可以试试 TCC(Tiny C Compiler) 等等 )
2019-02-18 08:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
自己又写不了链接器   还不是要站在巨人的肩膀上吗

DO IT YOURSELF !
2019-02-18 09:08
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
收藏
得分:0 
1:exe文件(二进制可执行文件)其实本质上依旧是一段代码、指令的组合(当然,长度惊人),它其实是系统命令、系统调用、源码编译产物、各种代码库的混合物,是源代码经过编译器编译,借助链接器链接系统相关、各种库才完成的,当然,因为它内部都是二进制为主,所以用文本类软件直接打开来看会发现大部分是乱码,而且有大片空白(空白并不一定是真的空白,可能是软件不予以显示的、没有对应字符含义的数字)
    C、C++ 都是编译类型语言,源代码需要编译器编译过后才能形成二进制可执行文件(exe),因此不具备类似 C# 等解释型编程语言的动态生成exe之类的功能(且这些功能更多的是依赖开发环境,不然为何VS会有win系统下宇宙最强编译器的称号呢)

2:利用C自然可以编写出窗体程序,就如同汇编也可以做到(汇编的可以在论坛的汇编板块和代码帖搜索到,是个远古级别的前辈写的),同理C也能做到,举个栗子,vim也是有windows版本的,它使用了一些三方库实现窗体程序,有兴趣可以去github看看vim的源码(代码量巨大,非常难消化)。
    C不适合开发窗体程序,它只能借助第三方库、系统接口等实现窗体程序的窗体(如果有人要用纯C实现也行,不过这种存在不是我们凡人能碰见的,此处不包括此类人),比如win的winAPI接口,或者借助gtk或者其他第三方库,都需要投入大量学习精力,但是回报甚少,且效率低下,甚至gtk这种开源库的学习还只有英文文档给你,win的话winAPI可以通过《windows程序设计 第五版》学习以及借助微软官网的MSDN获得相关的资料及文档
    不论如何,过于繁杂和效率低下注定C不适合作为个人开发窗体程序的首选,如果仅仅是应用类型的win窗体程序,C#+VS 是首选,拖控件实现功能可不是开玩笑的

3:程序名称是看程序是否是窗体程序,窗体程序的话,可以在程序源码生成窗体的指令处对生成的窗体名称进行更改,而图标的话,VS的项目设置可以很方便的变更程序的图标,但如果是已经编译好的程序,又没有源码,那么逆向工程和借助工具才能处理这种需求,在自行编写都做不到的情况下进行逆向工程,恐怕不要太有挑战性,部分工具可以修改这些东西,但这不在此处讨论范围,有兴趣可以自行百度
    至于控制台程序,控制台程序过于简陋,不借助系统接口实现或第三方库处理是没有图标的(一般都是如此),而程序名称则会默认为可执行文件(exe)的名称

以上回答为个人理解,难免有误,更多相关的东西,建议自行百度,谷歌,必应等
2019-03-02 11:30
快速回复:生成EXE文件的原理?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042690 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved