0

ここにあるプログラムをコンパイルしていますが、実行時にエラーが発生します。

これをコンパイルするために私がすることは次のとおりです。

$ g++ -I/home/jpthomps/Desktop/pl-6.0.2/src main.cpp -L/usr/local/lib/swipl-6.0.2/lib/x86_64-linux -lswipl
main.cpp: In function ‘int main()’:
main.cpp:8:39: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
main.cpp:20:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

次に、コンパイルされたプログラムを実行しようとすると:

$ ./a.out
./a.out: error while loading shared libraries: libswipl.so.6.0.2: cannot open shared object file: No such file or directory

libswipl.so.6.0.2 ファイルの場所を伝えるために、.cpp ファイルに何かを追加する必要がありますか?

4

1 に答える 1

1

表示される問題は、実行中a.outの動的ライブラリが見つからないことに関連しています。この問題に対処するには、システムに依存する方法がいくつかあります。たとえば、 Linux では、 があるディレクトリを含めるように設定できますLD_LIBRARY_PATHlibswipl.so.6.0.2


コンパイルの警告はランタイム エラーとは関係ありませんが、修正することをお勧めします。

static const char * av[] = {"calc.pl", NULL};
....
const char * expression = "pi/2";
于 2012-08-16T16:21:19.440 に答える