欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在C語言中調(diào)用C++做的動態(tài)鏈接庫

 更新時間:2016年05月08日 11:42:05   投稿:hebedich  
如果你有一個c++做的動態(tài)鏈接庫.so文件,而你只有一些相關(guān)類的聲明,那么你如何用c調(diào)用呢,別著急,本文通過一個小小的例子,讓你能夠很爽的搞定.

今天在做東西的時候遇到一個問題,就是如何在C語言中調(diào)用C++做的動態(tài)鏈接庫so文件

如果你有一個c++做的動態(tài)鏈接庫.so文件,而你只有一些相關(guān)類的聲明, 那么你如何用c調(diào)用呢,別著急,本文通過一個小小的例子,讓你能夠很爽的搞定.  

鏈接庫頭文件:

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文件,將其拷貝到系統(tǒng)庫里面:/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
下面開始調(diào)用:

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
$

相關(guān)文章

  • C語言數(shù)組元素的循環(huán)移位方法

    C語言數(shù)組元素的循環(huán)移位方法

    今天小編就為大家分享一篇C語言數(shù)組元素的循環(huán)移位方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C語言實現(xiàn)簡單五子棋小游戲

    C語言實現(xiàn)簡單五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言中字符串庫函數(shù)的實現(xiàn)及模擬

    C語言中字符串庫函數(shù)的實現(xiàn)及模擬

    C語言中有很多數(shù)據(jù)類型,比如int(整數(shù)類型)、char(字符類型)、以及浮點型的double(雙精度)等。但是有一點就是我們發(fā)現(xiàn)這里并沒有提到我們常見的有關(guān)字符串的類型。本文為大家介紹了C語言中字符串庫函數(shù)的實現(xiàn)及模擬,需要的可以參考一下
    2022-11-11
  • C語言指針詳解之野指針

    C語言指針詳解之野指針

    這篇文章主要為大家介紹了C語言野指針,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C語言實現(xiàn)彈跳小球

    C語言實現(xiàn)彈跳小球

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)彈跳小球,設(shè)置了小球分?jǐn)?shù)及過關(guān)難度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 帶頭結(jié)點單鏈表與不帶頭結(jié)點單鏈表的區(qū)別

    帶頭結(jié)點單鏈表與不帶頭結(jié)點單鏈表的區(qū)別

    這篇文章主要介紹了帶頭結(jié)點單鏈表與不帶頭結(jié)點單鏈表的區(qū)別,需要的朋友可以參考下
    2023-07-07
  • 基于C++實現(xiàn)擲雙骰游戲的示例代碼

    基于C++實現(xiàn)擲雙骰游戲的示例代碼

    在最流行的博彩游戲中有一種名為“擲雙骰”(craps)的骰子游戲,這種游戲在世界各地的娛樂場所和大街小巷非常受歡迎。本文將用C++語言實現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • C++單例類模板詳解

    C++單例類模板詳解

    這篇文章主要介紹了C++單例類模板,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 從頭學(xué)習(xí)C語言之switch語句和分支嵌套

    從頭學(xué)習(xí)C語言之switch語句和分支嵌套

    這篇文章主要為大家詳細(xì)介紹了C語言之switch語句和分支嵌套,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 15種?C++?常見報錯原因分析

    15種?C++?常見報錯原因分析

    這篇文章主要介紹了15種?C++?常見報錯,本文通過實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01

最新評論