这个是一个跨世纪的想法,异想天开指数我给五颗星!
java生成的jar包之类的其实并不能执行,它需要虚拟机运行环境,换句话来说,它并不是PE文件,Jar包也只是IL语言的中间层,java源码被编译后,再根据JIT一句句地翻译执行!当然他还有其他的机制,并不是保证每次运行都是有翻译的,事实上他首次对某运行代码段进行翻译会存储到临时空间中,下次执行时则不再翻译(这是JIT优化后的功能)。而这个JIT在不同的机器上(硬件环境不同,会将同一句的IL翻译成不同的机器可 *** 作指令,这也就是移植性的真正内涵)。原理是样的!
C#基于的想法与Java是相同的,它也是如此,但生成的dll或exe其实是一种特殊的PE文件,也是需要net framework 运行环境支持的!也就是JIT(即时翻译)!它与java运行环境实现的功能是一样的,首次运行某一代码段就翻译某段,但它会有一个镜象存储那里,就是我们说的Native,当翻译过的代码段可以直接从Native中直接运行,跳过JIT翻译从而提高性能。当然,C#的这个dll/exe也是中间语言(IL),只不会老大总是厉害点,它实现的并非是标准的IL,而是微软自家的IL,叫MSIL!换句话来说,两者原理相同,但生成后的IL却是不同的!
C++其实是一门语言而已!它也被net 作为上层语言,也就是说他也存在一个C++net。这个当然生成的与C#一样的,其实net上层有多个编程语言的,不管你是VB/C#/F#/J#还是C++,最终生成的都是MSIL,微软的目的就是上层使用不同语言的程序员能在一起工作,这就是net,生成的都是MSIL的中间语言的dll/exe。
但是,虽然是在VS中,还存在另一种C++的开发形式,这就是我们说的MFC等相关的开发,其实这时VS开发环境并不是执行net,而此时VS完完全全就是Visual C++一样的功能。当然这种生成的移植性差了,但他生成的却是windows可以直接执行PE文件,如dll或exe!这种dll/exe并不是MSIL中间语言,而是标准的windows可执行的二进制文件!不须在windows中安全net运行环境可以直接运行!
所以针对这三者的联接,或者说打包成一个文件,其可能性不大了!jar包中是IL,net中的MSIL,而C++则完全是二进制PE文件!你要连接成什么?!
所以这是一个跨世纪难题——不过好象不需要解决!
多说一点,net core事实上是可以生成ubuntu等linux分发版的程序的,它是怎么实现的?其实其秘密就在于net中Native文件——如果你指明了是在某个发行版本的linux时,net core把MSIL直接翻译成对应版本的Native(这玩意可以直接可以执行的!),这就是为什么net core可以跨平台的作用(你知道它是怎么跨的吗?源码跨而已——如果你发布时写dotnet publish -r ubuntu-1404 那么生成的文档也只能用到ubuntu 1404上,换到ubuntu 1604上运行就会出错!所以也可以是winrm 或 win x64等参数),换句话来说,net生成的dll我们只须指定是X86还是X64/或者IA 64等形式即可,当然也可以X86运行到任何windows系统上!只有一个生成的文件,而跨平台的net core其实并不再具有移植性了!这下你知道Native文件的作用了吧?其实我们在netcore没有推出之前就想办法玩过native文件以提高性能(但丢失了移植性)。
但C++呢,其实这个吧,它也是具有这样的特性的,他生成的文件有一定的移植性,或者多数时候我们需要在不同的系统上进行编译!比如在windows上,编译后可以被不同的windows平台使用,但在linux系统上,一般是下载gcc,然后下源码进行当机编译!换句话来说,net core编译是一个参数,而c++则使用的是“硬参数”由不同的 *** 作系统自己去编译!这你让net core与C++情何以堪?更别说那么还有一个Java!那家伙为了保证自己的可移植性,必须需要虚拟机!
所以吧,你这个问题,其实只是想问问到底有谁懂这些底层的原理而已!虽然它们三个语言关系很近(java是以C++为蓝本,简化C++语言增加类库与虚拟机机制,所以程序员称其为C++升级版——功能升级,被亲切地称为C+++,开明人士认为其对C++语言本身是一种简化——语言简化版,被称之为C++-,而C#则是微软看到Java的优势后生成的语言,为了夺回自己C++的用户群,据说内定就叫Java+,也就是java的升级版!)他们三关系确实很近!
其实吧,针对语言发展上还有一个小秘密:微软有C语言,有C+语言(国内流行的一行左右,很多人不知道,我说这个典的时候,居然有一个哥们上学时就学了一年C+,不过他现在是电工,哈哈),还有C#语言(其实就是C++++呗!),你可能会奇怪,为什么没有C+++语言?对,就是没有这个语言,这个称号是C++的疯狂的时候被送给了Java了!那么程序员都叫Java语言是C+++或C++-!当然C#语言被叫做Java+,据某些报道说是一个内定版本,但没有人称其为Java+的!
三者虽然“近亲”,但一点都不“合”的!
INNO SETUP先向导创建脚本
[Files]
Source: "你要打包的软件目录\软件1exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "你要打包的软件目录\软件2exe"; DestDir: "{app}"; Flags: ignoreversion
添加以下代码即可,如果系统为64为,Flags: 64bit
[Run]
Filename:“"{app\软件1exe”;Flags: ignoreversion
Filename:“"{app\软件2exe”;Flags: ignoreversion
若是安装过程中同时启动两个程序,写个bat文件,start:两个程序,在INNO SETUP 里执行bat即可。也可使用Flags完成
别急,往下看,一定满足你的要求!
如果是一个程序有多个配置文件(你应该是这样),可以用winrar打包成自解压文件。别急,往下看,一定满足你的要求!
1、把程序及涉及的文件选定,右击“添加到压缩文件”
2、在页面中“压缩选项”中钩选“创建自解压文件”
3、点击“高级”——“自解压选项”
4、在“常规”中的解压后运行,输入你要运行的程序的路径(不用把全部的都写上!)如,在压缩文件中的00文件夹中有个123exe,输入的路径就是00\123exe(00一定要写!)
5、点击“模式”,在安静模式里钩选“全部隐藏”,在“临时模式”中钩选“解包到临时文件夹”
接下来一路点击确定就可以了,然后,点击生成的exe文件,稍等片刻就可以直接打开。
关于第5步的说明!!!!!
1、解包到临时文件夹是指解压缩到C盘中的临时文件夹,在你关闭程序以后会自动清空!如果你想长久保存,不钩选“解包到临时文件夹”,在常规中“解压路径”输入文件路径,一定要选“绝对路径”!
2、如果你认为生成的exe文件的图标太单调,可以用exescope(一个软件,仅有500K)打开原来的exe文件(未经压缩处理),将图标导出(具体步骤如下:点击“资源”——“图标”,选中一个图标,点击“文件”——“导出”到一个文件夹。在第3步之后,点击“文本和图标”,“从文件加载自解压文件图标”,将导出的图标打开,再一路确定就可以了!
终于写完了,耐心地看,不满意别给分!有什么不明白用百度联系我!
很多windows图标文件都是打包在dll文件或exe文件中的,因此是可以的。
在visual
studio
net中开发的时候,把chm文件嵌入到资源文件中,然后把资源文件与源码一起编译进一个dll文件或者exe文件。具体可以参考MSDN帮助文档,上面有net代码和传统的非托管代码的的资源文件处理详细办法和示例。
我的电子邮件sorichwalk@163com
c语言中
各个模块
其实就是函数的合集
所以
要合起来
只要把这些模块
写入到一个文件就好了啊
然后用一个main整合
或者
也可以建立多个文件,加入到project中,一起编译。
以上就是关于java、c#、c++多种语言混合编写的程序如何打包为一个exe文件全部的内容,包括:java、c#、c++多种语言混合编写的程序如何打包为一个exe文件、Inno Setup软件如何把多个安装包程序打包在一起,并一起运行呢我看你的问题你会了吧,谢谢、带多个文件的绿色小软件怎样打包成一个exe可执行的便携文件。并且双击可以打开软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)