Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta dan Menggunakan Perpustakaan Dikongsi Dinamik (DSL) dalam C di Linux?
Mencipta dan Menggunakan Pustaka Dikongsi Dinamik dalam C pada Linux
Pustaka kongsi dinamik (DSL) membenarkan berbilang atur cara berkongsi kod, mengurangkan penggunaan memori dan meningkatkan kecekapan. Dalam C , DSL membolehkan penciptaan perpustakaan kelas boleh guna semula yang boleh diakses oleh berbilang boleh laku.
Mencipta DSL
Untuk mencipta DSL, tentukan antara muka kelas dan pelaksanaan dalam pengepala dan fail sumber (cth., myclass.h dan myclass.cc). Pastikan kelas termasuk pemusnah maya dan kaedah awam yang ditandakan di luar "C" untuk memudahkan pemuatan simbol.
Menggunakan DSL
Untuk menggunakan DSL dalam boleh laku yang berasingan, lakukan langkah berikut:
Contoh Kod
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); }
Kompilasi dan Pelaksanaan
Pada Mac OS X:
Di Linux:
Laksanakan class_user untuk menggunakan pustaka kongsi MyClass. Ia akan membuat instantiate dan menggunakan objek MyClass dengan jayanya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta dan Menggunakan Perpustakaan Dikongsi Dinamik (DSL) dalam C di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!