CUDAを使用し、Cで記述された非常に複雑なアプリケーションがあります。このアプリケーションはコマンドラインのみであり、JavaSwingを使用して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仮想マシンからのものだと思います。
どうすれば修正できますか?