# C++实现jar转exe程序模板 **Repository Path**: shui4444/jarToExeBycpp ## Basic Information - **Project Name**: C++实现jar转exe程序模板 - **Description**: 一个简单的C++源码,64位应用程序通过把这个源码稍加修改并与链接后的jar文件(通过objcopy)联合编译即可实现jar套上exe的壳;32位程序则是直接通过exe启动jar而无需使用命令行运行jar。 - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2021-07-23 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++实现jar转exe程序模板 ### 介绍 一个简单的C++源码,64位应用程序通过把这个源码稍加修改并与链接后的jar文件(通过objcopy)联合编译即可实现jar套上exe的壳;32位程序则是直接通过exe启动jar而无需使用命令行运行jar。
TDM-GCC下载地址:
[官网下载](https://jmeubank.github.io/tdm-gcc/)
[备用下载](https://swsk33.lanzoui.com/b0bqvyq4d)
### 使用说明 #### 1,环境配置 先需要安装TDM-GCC并配置好环境变量(一般安装完成就配置好了)。
然后[下载](https://gitee.com/swsk33/jarToExeBycpp/releases)并解压右侧发行版/Release里面j2ec-xxx.7z文件(xxx代表版本号,下载最新版即可)进行操作。
#### 2,按需修改配置文件 在解压的文件夹中有一个"cfg.properties"文件,可以使用文本编辑器打开,这是全局配置文件,没有特殊需要可以不修改,不过大多数时候可能需要修改,里面配置值代表如下: - javapath=java的运行路径,默认安装了java的电脑直接填java即可,便携式jre需要在此指定 - errormsg=没有检测到jre时的提示内容 - preArgs=附带运行参数。即双击exe后自动加上的命令行参数,这个参数会先于命令行运行exe时加上的参数 - writeLogToFile=是否把程序的标准错误输出重定向到本地文件,建议控制台应用程序不要开启此项,开启填true否则为false - logFilePath=标准错误输出文件位置,若上面变量writeLogToFile为false,则此变量无效 - winapp=是否是窗口应用程序,窗口程序填true,控制台程序填false 配置文件中以#开头的一行是注释,构建exe时不会读取注释内容,默认情况下配置文件是全部被注释的状态。可根据自己需要去掉配置值的注释并填入配置值。 #### 3,打开命令行/cmd调用buildexe进行jar到exe的构建 使用命令行/cmd的cd命令进入到解压的文件夹,输入命令调用buildexe.exe文件,命令形式如下: ``` buildexe -re/-in -j jar文件路径 -o 输出exe路径 -p 架构 [-i ico图标文件路径] [-c 指定配置文件] [-s] ``` 上述命令中中括号括起来部分是可选参数,实际加上这些可选参数执行时不需要写中括号。
-re和-in必须要指定一个,且不能共存,它们含义下: - -re --- 引用模式,这时会把源jar文件和构建的exe文件一同放到输出目录,exe相当于启动jar的作用,支持32位和64位程序 - -in --- 包含模式,这时会把源jar文件嵌入至构建的exe文件,生成的exe文件可以单独存在,这种模式只支持64位程序 -s --- 是否去除调试信息以减小生成exe大小,默认不去除 架构(-p)参数可选值如下: i386 --- 32位应用程序 x64 --- 64位程序 当没有指定-c时,程序会默认使用buildexe所在目录下的cfg.properties作为配置文件
上述参数顺序可以任意写。
#### 5,实例 **将E:\\中转\\a.jar打包为main.exe的64位应用程序放到用户下载文件夹:**
``` buildexe -in -j "E:\中转\a.jar" -p x64 -o "C:\Users\%username%\Downloads\main.exe" ``` **构建32位应用程序引用模式的main.exe用于启动E:\\中转\\a.jar,放到用户下载文件夹,并指定exe图标为C:\\icon\\ex.ico:**
``` buildexe -re -p i386 -j "E:\中转\a.jar" -o "C:\Users\%username%\Downloads\main.exe" -i "C:\icon\ex.ico" ``` #### 6,其它 若编译出来的exe文件太大,可参考方案:[地址](https://blog.csdn.net/yanhanhui1/article/details/109631544)
**该程序原理可以参考:**
C语言或者C++中隐藏控制台窗口:[地址](https://blog.csdn.net/yanhanhui1/article/details/109271169)
在C语言/C++中把资源编译进exe可执行文件,并运行时释放资源:[地址](https://blog.csdn.net/yanhanhui1/article/details/109235349)
g++给exe加图标:[地址](https://blog.csdn.net/yanhanhui1/article/details/110238429)
>最后更新:2021.6.18