私のプログラムはダイナミックライブラリをロードしますが、ロードしようとした後にロードされます(ロードされていないか、少なくとも何かがロードされていないとエラーが発生します)。リンカーの問題またはその他?動的にロードされたライブラリ
gdbで次のように表示されます。
Program received signal SIGSEGV, Segmentation fault.
__strlen_ia32() at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99 ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S
どうすればこの問題に対処できますか?
EDIT1:
上記の問題は、私はそれがされている必要がありますxmlファイルを持っていないためでした。
ここで私が最初に示したエラーは、私が示した最初のエラーです。
(gdb) s
__dlopen (file=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so", mode=1)
at dlopen.c:76
76 dlopen.c: No such file or directory.
in dlopen.c
(gdb) bt
#0 __dlopen (file=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so",
mode=1) at dlopen.c:76
#1 0xb7f8680d in visual_plugin_get_references (
pluginpath=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so",
count=0xbfffd020) at lv_plugin.c:834
#2 0xb7f86168 in plugin_add_dir_to_list (list=0x804e428,
dir=0x804e288 "/usr/lib/libvisual-0.5/actor") at lv_plugin.c:609
#3 0xb7f86b2b in visual_plugin_get_list (paths=0x804e3d8,
ignore_non_existing=1) at lv_plugin.c:943
#4 0xb7f9c5db in visual_init (argc=0xbffff170, argv=0xbffff174)
at lv_libvisual.c:370
#5 0x080494b7 in main (argc=2, argv=0xbffff204) at client.c:32
(gdb) quit
A debugging session is active.
Inferior 1 [process 3704] will be killed.
Quit anyway? (y or n) y
[email protected]:client$ ls /usr/lib/libvisual-0.5/actor/actor_AVS.so
/usr/lib/libvisual-0.5/actor/actor_AVS.so
[email protected]:client$
ファイルが存在します。何が起きているのか分かりません。どちらのコードを提供するかわからない
Edit2:ファイルの詳細。許可はOKです。あなたがダイナミック何ライブラリにそれを言わなかった
816K -rwxr-XR-xの1ルートルート814K 2011-11-08 15:06 /usr/lib/libvisual-0.5/actor/actor_AVS.so
コードを投稿するのはどうですか?私たちが知ることは、どこかで 'strlen'への無効なポインタを渡したことだけです。 –
あなたは文字列の最後を吹き飛ばしたように見えます。つまり、終わりのナルがありません。 dlsymとdlopenはどちらもユーザー定義の文字列を必要とします。私はそれが問題であるかどうか最初に見るだろう。 –