■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

UNIX初心者スレッド パート2

657 :655 :2001/04/22(日) 14:00
>>656
迷わせてしまったようで、ごめんなさい。
使用しているのは、Linuxです。板違いで申し訳ないですが、質問がLinux固有のものではない
と思いましたので、Unix板にしました。

質問をもう少し具体的にします。質問は共有ライブラリの作成とそれを動的にロードして使う方法についてです。
例えば、libsafec.so.1.0.0という共有ライブラリを作成し、それをlibsafec.so.1とlibsafec.soへの
シンボリックリンクを作成します。
このライブラリには、AとBという関数があります。そのプロトタイプは次のようになっています。
int A (int count, char* buf);
int B (const char *port, const char *prot);

この関数を動的にロードしながら使いたいのですが、main()のあるmyprogram(という名前のプログラム)
のなかで、dlopen()やdlsym()を使いながらそれをするにはどう記述したらいいのかがよく分からないのです。

B関数を使いたいとしたら、今の自分の知識だけで書くとこうなります。
void *dl_handle;
int (*bPtr)(const char, const char);   //ここが?です。

dl_handle = dlopen("libsafec.so", RTLD_NOW);
if (dl_handle == NULL){
省略
}
bPtr = (int (*)(const char, const char)) dlsym(dl_handle, "B");
if (bPtr == NULL){
省略
}

ここで分からないのは、bPtrを宣言するとき、portとprotについているconst と ポインタ*は、
どうするのかが分かりません。上のプログラムでは、
int (*bPtr)(const char, const char);としましたが、これは正しいのでしょうか?


掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)