java - 从 Java 代码运行 MSVC 编译器会出现错误

标签 java windows visual-studio-2008 visual-c++ compilation

我正在尝试使用 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/

相关文章:

c++ - MFC 功能包 2008 CPaneDialog 作为 CDialogBar

java - 使用 Cayenne 从具有多个模式的 Postgres 数据库生成类

java - 如何计算程序运行时消耗了多少时间

java - Toast.makeText 在 Android Studio 上只出现一次

windows - 如何让 Windows 7 接受来自地址为 "127.0.0.2"的外部设备的 UDP 消息?

javascript - 在使用 Firefox 时,是否可以使用 Visual Studio 在 javascript 文件中设置断点?

c++ - C++ 中的 "Evaluate function"

java - 我应该为高效方法选择高时间复杂度数据结构还是高空间复杂度数据结构?

windows - 如何更改目录以从不同的驱动器运行 .bat 文件?

windows - 从 Windows 命令行显示 "toast"通知弹出窗口的程序?