Wiki

Clone wiki

java-cef / 编译V49到XP环境中运行

本例讲解如何将v49编译为32位程序到XP下测试运行

忘了之前给过32位cef下载链接没有,这里加上。 cefpart1 cefpart2

下文中说的需要VC2013运行时其实是不用的,因为cef内核与jcef_helper是完全跨平台并且无第三方依赖的,也就是不需要安装vcredist**.exe或者打包msvc*120.dll


* 不再支持xp的原因

1. 新的PE格式

对于cef架构而言,它是多进程的,例如谷歌浏览器会有多个chrome.exe,360浏览器会有多个360se.exe。java-cef会有一个java(w).exe和多个jcef_helper.exe。

Windows Vista之后exe文件格式与XP不一样了。如果运行,则会出现如下图的结果

notvalidwin32exe.png

在命令行运行则会提示Failed to launch child process

而Visual Studio 2013生成的exe默认是Vista之后的格式(dll是兼容的),我们这篇文章整个核心就是解决这个问题

2. 新的API

v49之后的版本对于操作系统API都不支持xp了,如下图

newAPI.png

* 编译过程

1. 安装32位的JDK

因为编译c/c++程序区分32和64位,编译java-cef的c++部分时需要用到jdk里面的lib,这个区分位数。

如果你懂c/c++的编译链接,就可以直接将32位的jawt.lib和jvm.lib路径替换jcef项目的对应路径即可。不懂就卸了64位装32的

jdk7u80win32part1 jdk7u80win32part2

2. 设置jcef_helper兼容XP

话不多说直接上图,大家一看就懂

cmake.gif

在cmake这一步呢跟win64不一样的就是不加win64关键字,默认就是32位

vs.gif

请大家务必注意我鼠标着重标注的几个地方,有时候你会发现你设置的是Debug,而想要的Release。

3. 需要VCR

由于程序是用vs2013编译出来的,需要基础类库(一些dll)。

vcr.gif

4. 编译32位java

这个纯属扯淡,因为java不分32位64位,但是你用compile.bat传递的参数不同,生成的文件夹不同。

compile32.gif

5. 放到XP里面运行

All you need is 下面的东西

xpinstall.gif

安装jre即可。然后就可以用命令行运行。

runxp.png

Updated