我正在尝试使用 MSVC2008 编译器从 Java 代码编译一些 C++ 源文件。例如。我有源文件的路径和MS编译器的路径。我需要运行编译器并获取可执行文件路径或错误状态。但到目前为止我得到的一切都是“未定义包含路径”错误和2
的退出状态。
谷歌搜索了一下,我得到了 vsvars32.bat
文件路径,它修复了从原始 cmd
运行时出现的错误。但似乎 Java 有自己的环境,与使用 ProcessBuilder
运行进程时的操作系统环境完全不同。
到目前为止我已经得到了这段代码:
compilerPath = String.format("\"C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe\" \"%s\"", sourcePath);
ProcessBuilder builder = new ProcessBuilder(compilerPath);
Process process = builder.start();
builder.redirectErrorStream(true);
process.waitFor();
每当我运行它时,都会返回 exitValue == 2
和上面提到的错误。
如何解决这个问题,以便我可以运行 cl.exe
并获取我的可执行文件?
最佳答案
如果 cl.exe 位于您的 PATH 中,您只需运行它即可。这不是一个java问题。这是您操作系统的配置。
问题是您可能无法配置运行应用程序的每台计算机的环境。其他可能的问题是编译器可能必须在特定目录中执行(例如在项目目录中)。
显然,路径中的空格又增加了另一层复杂性。
首先尝试在命令提示符下执行完全相同的操作。它也有可能会失败并打印原因。
如果它有效,则返回您的 java 代码,但尝试读取 cl.exe
的 STOUT 和 STDERR。我相信它打印的内容可以帮助您了解问题所在。
关于java - 从 Java 代码运行 MSVC 编译器会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553133/