


Bagaimanakah Saya Mencipta dan Menggunakan Perpustakaan Dikongsi Dinamik (DSL) dalam C di Linux?
Dec 04, 2024 am 12:25 AMMencipta dan Menggunakan Pustaka Dikongsi Dinamik dalam C pada Linux
Pustaka kongsi dinamik (DSL) menawarkan mekanisme yang berkuasa untuk penggunaan semula kod dan modulariti dalam C . Ia membenarkan berbilang atur cara untuk berkongsi satu salinan kod perpustakaan, mengurangkan penggunaan memori dan meningkatkan prestasi.
Mencipta Pustaka Dikongsi Dinamik
Untuk mencipta DSL, anda perlu mentakrifkan kelas dan fungsi dalam fail pengepala dan fail pelaksanaan, masing-masing. Dalam fail pengepala, isytiharkan kelas anda dengan fungsi maya untuk mengelakkan pautan statik. Dalam fail pelaksanaan, tentukan fungsi dan sediakan fungsi pembungkus untuk mencipta dan memusnahkan objek.
// myclass.h class MyClass { public: 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; }
Menyusun dan Memaut
Pada Linux:
g++ -fPIC -shared myclass.cc -o myclass.so
Pada Mac OS X:
g++ -dynamiclib -flat_namespace myclass.cc -o myclass.so
Menggunakan Pustaka Dikongsi
Dalam boleh laku yang berasingan, muatkan DSL menggunakan dlopen() dan dapatkan penuding kepada fungsi create_object() dan destroy_object(). Cipta contoh kelas menggunakan create_object(), gunakan kaedah kelas, dan akhirnya panggil destroy_object() untuk mengagihkan memori.
// class_user.cc 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 = (MyClass*)create(); myClass->DoSomething(); destroy(myClass); }
Menyusun dan Memaut:
Pada Linux:
g++ class_user.cc -ldl -o class_user
Pada Mac OS X:
g++ class_user.cc -o class_user
Kod Contoh
Contoh yang disediakan mempamerkan cara mencipta pustaka kelas kongsi, memuatkannya dalam boleh laku yang berasingan dan menggunakan fungsi kelas. Konsep utama melibatkan penentuan kelas dan fungsi, mencipta fungsi pembungkus untuk penciptaan dan pemusnahan objek, memuatkan perpustakaan dan memanggil kaedah kelas.
Atas ialah kandungan terperinci Bagaimanakah Saya Mencipta dan Menggunakan Perpustakaan Dikongsi Dinamik (DSL) dalam C di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
