私が作成したライブラリを動的にリンクする必要があります。私はその問題が何であるか正確には分からない。それはすべて正常にコンパイルが、私はいつもNULL
ポインタとしてhandle
をキャッチ:libdlと動的リンクライブラリを正しく使用する
void *handle;
char *error;
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
if(!handle){
error = dlerror();
printf("%s\n", error);
printf("Error loading library.\n");
exit(1);
}
私はこのエラーを渡されるカントと私はおそらく間違っている可能性が何か分かりません。私はすべてを正しくコンパイルしたと確信しています。ここで私が使用コンパイル手順は次のとおりです。私はET_DYNとET_EXECをロードすることができ
を読み込みエラーを取得しています
gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4
。
'-rdynamic'に沿って?両方で、 '-shared'で試してみましたが、同じエラーが出ました。 –
@MichaelSchilling: '-rdynamic'は問題とは関係ないと思うので、あなたのコードで必要な場合に備えておくこともできます。 – NPE
@MichaelSchilling: '-c'を削除しましたか? – NPE