首頁 >後端開發 >C++ >如何在Linux上建立和使用C動態共享庫?

如何在Linux上建立和使用C動態共享庫?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-08 02:39:14222瀏覽

How to Create and Use a C   Dynamic Shared Library on Linux?

Linux 上的C 動態共享庫

動態共享庫(DSL),也稱為共享庫或共享對象,提供將程式碼分離為可重複使用模組的功能C 編程。這使得多個程式之間可以共用程式碼,減少程式碼重複,並且更容易維護。

建立共用類別庫

在 C 中,建立共用類別庫包括為類別實作定義頭檔 (.h) 和原始檔案 (.cc)。頭文件應聲明類接口,而源文件則提供實現。要建立包含這些檔案的共用程式庫:

#include "myclass.h"<h1>include <iostream></iostream>
</h1><p>using namespace std;</p> <p><br>using namespace std;<br> <br></p>using namespace std;<p> <br><br>using namespace std;<br> </p><p>using namespace std;<strong> </strong></p>using namespace std;<p>MyClass::MyClass()</p>{<p> x = 20;<strong>}</strong></p>void MyClass::DoSomething()<p>{</p> cout }
  • 外部連結
  • 使用以extern "C"為前綴的符號,外部連結指示編譯器使函數可用到外面的世界。在其他程式中從共享庫呼叫函數時,這是必需的。
  • 使用共用程式庫
  • 要在單獨的可執行檔中使用共用類別庫,請依照下列步驟操作:
  • 載入庫:
  • 使用dlopen載入共享庫
  • 取得函數位址:利用 dlsym 取得 create_object 和 destroy_object 函數的位址。

    建立物件:

    呼叫 create_object函數實例化一個物件

    使用物件:

    在建立的物件上呼叫成員函數,如 DoSomething。

    銷毀物件:

    最後,呼叫destroy_object函數解除指派object.


    使用範例
    以下程式碼片段說明如何使用共用類別函式庫:

    #include <dlfcn.h><p>包含<iostream><strong></strong>include "myclass.h"</iostream></p>
    <p>使用命名空間std;</p>
    <pre class="brush:php;toolbar:false">g++ -dynamiclib -flat_namespace myclass.cc -o myclass.so
    g++ class_user.cc -o class_user
    int main(int argc, char **argv) {

    MyClass

    myClass = (MyClass
    g++ -fPIC -shared myclass.cc -o myclass.so
    g++ class_user.cc -ldl -o class_user
    )create();

    myClass->DoSomething();

    destroy( myClass );}編譯對於Mac OS X:對於Linux:透過使用共享函式庫,開發人員可以增強 C 程式碼中程式碼的可重用性、可維護性和可擴充性。動態連結可以實現程式之間的程式碼共享,優化記憶體使用並提高軟體系統的整體效能。

    以上是如何在Linux上建立和使用C動態共享庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn