<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    如何在C語言中調用C++做的動態鏈接庫

    時間:2024-12-06 02:17:54 C語言 我要投稿
    • 相關推薦

    如何在C語言中調用C++做的動態鏈接庫

      如果你有一個c++做的動態鏈接庫.so文件,而你只有一些相關類的聲明,那么你如何用c調用呢?下面百分網小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!

      鏈接庫頭文件:

      head.h

      class A

      {

      public:

      A();

      virtual ~A();

      int gt();

      int pt();

      private:

      int s;

      };

      firstso.cpp

      #include <iostream>

      #include "head.h"

      A::A(){}

      A::~A(){}

      int A::gt()

      {

      s=10;

      }

      int A::pt()

      {

      std::cout<<s<<std::endl;

      }

      編譯命令如下:

      g++ -shared -o libmy.so firstso.cpp

      這時候生成libmy.so文件,將其拷貝到系統庫里面:/usr/lib/

      進行二次封裝:

      secso.cpp

      #include <iostream>

      #include "head.h"

      extern "C"

      {

      int f();

      int f()

      {

      A a;

      a.gt();

      a.pt();

      return 0;

      }

      }

      編譯命令:

      gcc -shared -o sec.so secso.cpp -L. -lmy

      這時候生成第二個.so文件,此時庫從一個類變成了一個c的接口.

      拷貝到/usr/lib

      下面開始調用:

      test.c

      #include "stdio.h"

      #include "dlfcn.h"

      #define SOFILE "sec.so"

      int (*f)();

      int main()

      {

      void *dp;

      dp=dlopen(SOFILE,RTLD_LAZY);

      f=dlsym(dp,"f");

      f();

      return 0;

      }

      編譯命令如下:

      gcc -rdynamic -s -o myapp test.c

      運行Z$./myapp

      10

      $

    【如何在C語言中調用C++做的動態鏈接庫】相關文章:

    怎么在C語言中調用C++做的動態鏈接庫07-15

    如何在C/C++中調用Java03-13

    如何在c語言中調用Linux腳本07-09

    C/C++函數調用的方式07-29

    C++調用C函數的方法05-21

    C++如何調用matlab函數06-29

    C與C++之間相互調用的實例07-07

    C/C++函數調用的方式有哪些06-23

    C語言中Swift函數調用實例01-17

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人