3

この問題は以前に解決されたと確信しており、どのように解決されたのか興味があります。実行時にディレクトリの内容をスキャンして機能をロードしたいコードがあります。

具体的には、関数呼び出しを追加できるようにしたいスクリプト エンジンを使用しています。私は、コア エンジンが非常に限定された機能を提供することを望んでいます。ユーザーは、サードパーティのライブラリを介して追加の機能を追加できる必要があります。これは、エンジンがスキャンしてロードする必要があります。これはどのように行われますか?

4

3 に答える 3

6

プラットフォームによって異なります。win32 では、 を呼び出しLoadLibraryて DLL をロードし、それから を使用して関数を取得しますGetProcAddress。Unixy プラットフォームでは、同等のものはdlopendlsymです。

于 2008-10-17T12:34:29.097 に答える
4

Linux/UNIX で POSIX dlopen/dlsym/dlerror/dlclose 関数を使用して、共有ライブラリを動的に開き、それらが提供するシンボル (関数を含む) にアクセスできます。詳細については、man ページを参照してください。

于 2008-10-17T12:35:38.843 に答える
3

これにライブラリを使用する場合は、GLib (GTK+ UI ツールキットの下にあるユーティリティ ライブラリ) をお勧めします。「GModule」サブ API を備えており、クリーンでポータブルな方法でこれを行うことができます。これにより、関連する呼び出しを自分でラップする必要がなくなり、また、あらゆるサイズの C プログラムで非常に便利な GLib の残りの部分を利用できます。

于 2008-10-17T12:41:30.893 に答える