1

dlopenオブジェクトをロードdlsymし、共有オブジェクト関数への関数ポインタを取得するために使用しました。すべて正常に動作します。私はそれをテストしてから、共有関数を呼び出してテストしましたが、これは(今のところ)印刷するだけで、それを呼び出すメインプログラムで正常に印刷されます。ここで、この関数に 2 つの引数を渡したいと思います。int共有関数に引数をchar *渡す方法を理解できる人はいますか? Webで検索しましたが、その仕組みがわかりません。

4

1 に答える 1

9

関数をロードします。

int (*func)(int x, char *y) = dlsym(dl_handle, "your_function");

からの帰りにキャストが必要だと思うかもしれませんdlsym()。これは、動的にロードされたライブラリの醜いものの1つです。

それを呼び出す:

int i = 37;
char buffer[64];
int result1 = (*func)(i, buffer);  // Old school — pre-C89 (but still works and is explicit)
int result2 = func(i+1, buffer);   // New school — can leave you looking for the wrong thing.
于 2012-11-21T22:59:41.973 に答える