如何从32位C ++应用程序启动64位Java应用程序?

时间:2011-11-10 19:59:02

标签: java c++ 32bit-64bit windows-7-x64

我正在使用一个简单的C ++程序在Windows 7 64位中运行可执行的.jar文件。我希望这能执行64位java,但它没有,它执行32位版本。

我正在使用以下代码:

const char* javaw_path     = "javaw.exe";
const std::string memory   = "-Xmx" + user_configured_memory();
const char* jar            = "-jar";
const char* jar_file       = "\"HelloWorld.jar\"";
const std::string cli_args =  get_cli_args(argc, argv);

const char* args[] = {javaw_path, memory.c_str(),
       jar, jar_file, cli_args.c_str(), static_cast<char*>(NULL)};    

const int ret = execvp(javaw_path, args);

当java应用程序启动时,它会按预期将机器体系结构记录为“x86”而不是“amd64”。我通过检查获得此信息:

System.getProperty("os.arch")

当我从命令提示符运行相同的命令时,事情按预期工作 - java app记录'amd64'。

如何更改启动程序以启动64位java?

1 个答案:

答案 0 :(得分:0)

如果您的C ++程序是32位,则无法执行此操作。您必须将C ++应用程序编译为64位,然后您可以从可执行文件中调用另一个64位应用程序。