Как запустить Java VM из C? Написание кода на C кажется довольно простым - я следовал коду, показанному на p. 84 из "Нативного интерфейса Java" Ляна. Это процесс связывания, который блокирует меня. В этом отношении книга Ляна устарела на 10 с лишним лет, и я не могу найти в сети ничего, что могло бы решить эту задачу (и которая работает).
Чтобы было ясно, я хочу запустить стандартную программу Windows (написанную на C), которая затем запускает JVM и вызывает main () в классе Java (который я написал). Эта программа не должна полагаться на наличие jvm.dll или jvm.lib - пользователю не нужно устанавливать Java для запуска программы. Возможно, это невозможно без чрезмерных усилий.
Среда разработки - MinGW под windows. Я могу связать таким образом, что программа работает, когда .dll находится в отдельном файле, но не таким образом, что есть только один исполняемый файл без каких-либо .dll или .libs.
Оглядываясь назад, теперь я вижу, что это был тупой вопрос или, по крайней мере, тот, который не был продуман. Мораль этой истории заключается в том, что JVM - это не один исполняемый файл или даже исполняемый файл плюс некоторые JAR-файлы; JVM опирается на множество независимо хранимых файлов с различными взаимозависимостями. Разобрать все эти отношения, чтобы их можно было объединить в один файл (или даже в два файла), было бы непросто. Спасибо за стук в голову.