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 중국어 웹사이트의 기타 관련 기사를 참조하세요!