Linux 上の C での動的共有ライブラリの作成と使用
動的共有ライブラリ (DSL) を使用すると、複数のプログラムがコードを共有できるため、メモリ使用量が削減されます。そして効率の向上。 C では、DSL を使用して、複数の実行可能ファイルにアクセスできる再利用可能なクラス ライブラリを作成できます。
DSL の作成
DSL を作成するには、ヘッダーでクラス インターフェイスと実装を定義します。およびソース ファイル (例: myclass.h および myclass.cc)。シンボルの読み込みを容易にするために、クラスに仮想デストラクターと extern "C" とマークされたパブリック メソッドが含まれていることを確認して、シンボルの読み込みを容易にします。
DSL の使用
別の実行可能ファイルで DSL を利用するには、次の手順を実行します:
例コード
myclass.h
#include <iostream> class MyClass { public: MyClass(); virtual void DoSomething(); private: int x; };
myclass.cc
#include "myclass.h" extern "C" MyClass* create_object() { return new MyClass; } extern "C" void destroy_object(MyClass* object) { delete object; } MyClass::MyClass() { x = 20; } void MyClass::DoSomething() { std::cout << x << std::endl; }
class_user.cc
#include <dlfcn.h> #include <iostream> #include "myclass.h" int main() { void* handle = dlopen("./myclass.so", RTLD_LAZY); MyClass* (*create)(); void (*destroy)(MyClass*); create = (MyClass* (*)())dlsym(handle, "create_object"); destroy = (void (*)(MyClass*))dlsym(handle, "destroy_object"); MyClass* myClass = create(); myClass->DoSomething(); destroy(myClass); }
コンパイル実行
Mac OS X:
Linux の場合:
MyClass 共有ライブラリを使用するには、class_user を実行します。これにより、MyClass オブジェクトが正常にインスタンス化され、利用されます。
以上がLinux 上の C で動的共有ライブラリ (DSL) を作成して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。