我有一个非常复杂的应用程序,它使用 CUDA 并用 C 编写。这个应用程序只是命令行,现在我想使用 Java Swing 构建一个 GUI。
我不想重写 C 代码,所以我使用 ProcessBuilder 对象调用命令行版本。这样我就可以从中读取消息并在 GUI 内的控制台上显示。
这是我正在使用的代码:
String command = "myApp";
pb = new ProcessBuilder("bash", "-c",command);
pb.redirectErrorStream(true);
Process shell;
try {
shell = pb.start();
InputStream shellIn = shell.getInputStream();
Drawer.writeToLog(convertStreamToStr(shellIn));
shellIn.close();
} catch (IOException e) {
e.printStackTrace();
}
public String convertStreamToStr(InputStream is) throws IOException{
if(is != null){
Writer writer = new StringWriter();
char[] buffer = new char[1024];
Reader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
int n;
while((n = reader.read(buffer)) != -1){
writer.write(buffer,0,n);
}
is.close();
return writer.toString();
}else{
return "";
}
}
如果我尝试类似“ls”命令,它工作正常。但是,对于我的应用程序,我收到此错误:
./myApp: error while loading shared libraries: libcudart.so.5.0: cannot open shared object file: No such file or directory
CUDA 已在我的机器中安装并正确配置,我可以从终端正确执行此应用程序。我想错误来自Java虚拟机。
我该如何解决?