欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

今天在做東西的時候遇到一個問題,就是如何在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
$

上一篇:C語言演示對歸并排序算法的優(yōu)化實現(xiàn)

欄    目:C語言

下一篇:簡要說明C語言中指針函數(shù)與函數(shù)指針的區(qū)別

本文標(biāo)題:在C語言中調(diào)用C++做的動態(tài)鏈接庫

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2336.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有