Как запустить 64-битное Java-приложение из 32-битного приложения C ++? - PullRequest
0 голосов
/ 10 ноября 2011

Я использую простую программу на C ++ для запуска исполняемого файла .jar в Windows 7 64 бит. Я ожидал, что это выполнит 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-приложение регистрирует «amd64».

Как изменить программу запуска для запуска 64-разрядной Java?

1 Ответ

0 голосов
/ 19 января 2012

Если ваша программа на C ++ 32-битная, вы не сможете этого сделать. Вы должны скомпилировать приложение C ++ как 64-битное, а затем вы можете вызвать другое 64-битное приложение из исполняемого файла.

...