2011-01-10 9 views
11

私はWindowsでLoadLibraryのようなことを行い、GetProcAddressを使って関数ポインタを設定することを知っています。LinuxまたはOSXでライブラリを動的にロードするには?

しかし、LinuxやOSXでどうしたらよいですか?その理由は、私のXプラットフォームアプリケーション用のプラグインシステムを開発したいからです。あなたは(dlopenを使用してのLinuxでは

おかげ

答えて

10

あなたは(両方のために働く必要this Mac man page)LinuxおよびMac OS Xの両方でdlopenや友人を使用することができます。ただし、32ビットと64ビットのコードとライブラリを混在させないように注意する必要があります。 Macでは、ライブラリが「汎用バイナリ」であることを確認してください。

+0

「ユニバーサルバイナリ」についてのコメントは、LinuxとMacの両方に適用されますか?明確にする価値があるかもしれない。 –

+0

私が知っている限り、Linuxには一般的に利用可能なfatバイナリスキームはありませんが、( "universal binary"は太ったバイナリのAppleの言葉です)。ウルリック・ドレパーからこの否定手紙(驚き!)地獄は... HTTP凍りつくまでLinuxは脂肪のバイナリをサポートすることが非常に低いということになり - http://en.wikipedia.org/wiki/Fat_binary#FatELF:_Universal_Binaries_for_Linux – EmeryBerger

+0

@デビッドを参照してください。 ://www.redhat.com/archives/fedora-devel-list/2009-October/msg01118.html – EmeryBerger

5

)(オープンライブラリー)、dlsymを()と友人(記号(=関数や値、通常は)ルックアップする):http://linux.die.net/man/3/dlopen

私はそれが動作聞きますOS Xでも同じですが、私はその経験はありません。

19

dlopen(LoadLibraryに似ています)、dlclose(FreeLibraryに似ています)、dlsym(GetProcAddressに似ています)を探しています。

2

同等のPOSIXはdlopendlsymです。私はLinuxがそれらを持っていることを知っています、そしてOS Xがそうでないなら私は驚くでしょう。

関連する問題