<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

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

            時間:2025-02-19 20:25:08 C語言 我要投稿
            • 相關推薦

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

              如果你有一個c++做的動態鏈接庫.so文件,而你只有一些相關類的聲明,那么你如何用c調用呢?下面是小編為大家整理的怎么在C語言中調用C++做的動態鏈接庫的相關內容,歡迎參考~

              鏈接庫頭文件:

              head.h

              class A

              {

              public:

              A();

              virtual ~A();

              int gt();

              int pt();

              private:

              int s;

              };

              firstso.cpp

              #include

              #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

              #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++做的動態鏈接庫08-15

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

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

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

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

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

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

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

            在C語言中函數調用方式的區別01-07

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院