C言語なら俺に聞け 162
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
260:デフォルトの名無しさん 23/12/12 21:01:30.67 bMo3JLCK0.net >>259 やってみれば? 261:デフォルトの名無しさん 23/12/12 21:15:07.81 6C/zc+S/0.net 明示的に初期化処理を書くのが吉 262:デフォルトの名無しさん (ワッチョイ d701-Qbcu) 23/12/12 21:58:30.38 bMo3JLCK0.net >>259 >動的ロード(dlopen)を使用した場合はdlcloseして再度dlopenした場合は初期化されますか? Linuxの場合には初期化されたけど環境依存かも? $ cat hoge.c hage.c #include <stdio.h> static int a = 100; void increament_a () {++ a;} void print_a () {printf ("%d\n", a);} #include <dlfcn.h> typedef void (*Func) (); int main () { void *handle; Func func; handle = dlopen ("libhoge.so", RTLD_LAZY); func = (Func)dlsym (handle, "print_a"); (*func) (); func = (Func)dlsym (handle, "increament_a"); (*func) (); func = (Func)dlsym (handle, "print_a"); (*func) (); dlclose (handle); handle = dlopen ("libhoge.so", RTLD_LAZY); func = (Func)dlsym (handle, "print_a"); (*func) (); return 0; } $ gcc -shared -fPIC -o libhoge.so hoge.c $ gcc -o hage hage.c $ LD_LIBRARY_PATH=.; ./hage 100 101 100
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
281日前に更新/86 KB
担当:undef