Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta dan Menggunakan Perpustakaan Kelas C Dikongsi Dinamik di Linux?

Bagaimanakah Saya Boleh Mencipta dan Menggunakan Perpustakaan Kelas C Dikongsi Dinamik di Linux?

Susan Sarandon
Susan Sarandonasal
2024-12-05 05:12:09606semak imbas

How Can I Create and Use Dynamic Shared C   Class Libraries on Linux?

Pustaka Kelas C Dikongsi Dinamik di Linux

Pengenalan
Mencipta dan menggunakan perpustakaan kelas kongsi dalam C on Linux boleh menjadi tugas yang mencabar. Artikel ini menyediakan panduan komprehensif yang merangkumi proses mencipta dan menggunakan perpustakaan kelas C kongsi, termasuk penciptaan objek, pengubahsuaian dan pemusnahan.

Mencipta Pustaka Kelas C Kongsi
Kepada buat pustaka kelas C kongsi, ikut langkah berikut:

  1. Tentukan antara muka kelas: Cipta fail pengepala (.h) yang mengisytiharkan antara muka kelas, termasuk pembolehubah ahli dan kaedah.
  2. Laksanakan kaedah kelas: Cipta fail sumber (.cc) yang melaksanakan kaedah kelas.
  3. Eksport fungsi perpustakaan: Gunakan "luar 'C'" untuk mengeksport fungsi yang akan digunakan untuk mencipta dan memusnahkan perpustakaan objek.
  4. Kompilasi pustaka: Susun pengepala dan fail sumber ke dalam pustaka kongsi menggunakan bendera yang sesuai (-dikongsi pada Linux, -dynamiclib pada macOS).

Menggunakan Pustaka Kelas C Kongsi
Untuk menggunakan pustaka kelas C kongsi yang telah dibuat, ikuti ini langkah:

  1. Muat pustaka: Gunakan dlopen() untuk memuatkan pustaka kongsi ke dalam ingatan.
  2. Selesaikan simbol fungsi: Gunakan dlsym() untuk menyelesaikan alamat fungsi yang dieksport.
  3. Buat dan gunakan objek perpustakaan: Gunakan penuding fungsi yang diambil daripada dlsym() untuk mencipta objek kelas perpustakaan dan memanggil kaedahnya.
  4. Memusnahkan objek perpustakaan: Apabila selesai, gunakan pemusnahan penunjuk fungsi untuk memusnahkan objek perpustakaan dengan betul.

Contoh Pelaksanaan
Coretan kod berikut menunjukkan perpustakaan C kongsi mudah (myclass.h, myclass.cc) dan program C (class_user.cc) yang menggunakan perpustakaan:

myclass.h:

class MyClass {
public:
  MyClass();
  virtual void DoSomething();
private:
  int x;
};

myclass.cc:

extern "C" MyClass* create_object() { return new MyClass; }
extern "C" void destroy_object(MyClass* object) { delete object; }
MyClass::MyClass() { x = 20; }
void MyClass::DoSomething() { cout << x << endl; }

class_user .cc:

MyClass* (*create)();
void (*destroy)(MyClass*);
create = (MyClass* (*)())dlsym(handle, "create_object");
destroy = (void (*)(MyClass*))dlsym(handle, "destroy_object");
MyClass* myClass = (MyClass*)create();
myClass->DoSomething();
destroy(myClass);

Kompilasi (Linux):

g++ -fPIC -shared myclass.cc -o myclass.so
g++ class_user.cc -ldl -o class_user

Dengan mengikuti langkah ini, anda boleh berjaya mencipta dan menggunakan perpustakaan kelas C kongsi dinamik di Linux.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta dan Menggunakan Perpustakaan Kelas C Dikongsi Dinamik di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn