真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言導出dll函數(shù) dll導入函數(shù)

怎么提取DLL文件中的導出函數(shù)呢?

調用DLL有兩種方法:靜態(tài)調用和動態(tài)調用.

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供贛榆網(wǎng)站建設、贛榆做網(wǎng)站、贛榆網(wǎng)站設計、贛榆網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、贛榆企業(yè)網(wǎng)站模板建站服務,十年贛榆做網(wǎng)站經驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

(一).靜態(tài)調用其步驟如下:

1.把你的youApp.DLL拷到你目標工程(需調用youApp.DLL的工程)的Debug目錄下;

2.把你的youApp.lib拷到你目標工程(需調用youApp.DLL的工程)目錄下;

3.把你的youApp.h(包含輸出函數(shù)的定義)拷到你目標工程(需調用youApp.DLL的工程)目錄下;

4.打開你的目標工程選中工程,選擇Visual C++的Project主菜單的Settings菜單;

5.執(zhí)行第4步后,VC將會彈出一個對話框,在對話框的多頁顯示控件中選擇Link頁。然后在Object/library modules輸入框中輸入:youApp.lib

6.選擇你的目標工程Head Files加入:youApp.h文件;

7.最后在你目標工程(*.cpp,需要調用DLL中的函數(shù))中包含你的:#include "youApp.h"

注:youApp是你DLL的工程名。

(二).動態(tài)調用其程序如下:

動態(tài)調用時只需做靜態(tài)調用步驟1.

01 {

02 HINSTANCE hDllInst = LoadLibrary("youApp.DLL");

03 if(hDllInst)

04 {

05 typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);

06 MYFUNC youFuntionNameAlias = NULL;

07 // youFuntionNameAlias 函數(shù)別名

08 youFuntionNameAlias = (MYFUNC)GetProcAddress(hDllInst,"youFuntionName");

09 // youFuntionName 在DLL中聲明的函數(shù)名

10 if(youFuntionNameAlias)

11 {

12 youFuntionNameAlias(param1,param2);

13 }

14 FreeLibrary(hDllInst);

15 }

16 }

顯式(靜態(tài))調用:

LIB + DLL + .H,注意.H中dllexport改為dllimport

隱式(動態(tài))調用:

DLL + 函數(shù)原型聲明,先LoadLibrary,再GetProcAddress(即找到DLL中函數(shù)的地址),不用后FreeLibrary

c語言怎么調用dll文件?

1、新建DLLTest文件夾,在該文件夾中新建source文件夾。

2、在source文件夾中造add.c。

3、win+R+cmd請出總指揮“命令行”,輸入。

4、繼續(xù)輸入(路徑也要隨機應變)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。

5、新建源文件call_dll.c或.cpp放到DLLTest文件夾,同時add.dll也復制過來。

6、編譯,連接運行出現(xiàn)個5。調用成功。

注意事項:

C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。

用C語言編寫DLL

一.動態(tài)鏈接庫(dll)結構

——dll中定義有兩種函數(shù):導出函數(shù)(export

function)和內部函數(shù)

(internal

function),導出函數(shù)可以被其他模塊調用,內部函數(shù)只能在dll內部使用。我們在用c++定制dll文件時,需要編寫的就是包含導出函數(shù)表的模塊定義文件(.def)和實現(xiàn)導出函數(shù)功能的c++文件。下面以sample.dll為例介紹def文件和實現(xiàn)文件的結構:

——1.模塊定義文件(.def)是由一個或者多個用于描述dll屬性的模塊語

句組成的文本文件,每個.def文件至少必須包含以下模塊定義語句:

第一個語句必須是library語句,指出dll的名字。

exports語句列出被導出函數(shù)的名字。

可以使用description語句描述dll的用途(此句可選)。

";"對一行進行注釋(可選)

——2.實現(xiàn)文件(.cpp文件為例)

——實現(xiàn)入口表函數(shù)的.cpp文件中,包含dll入口點處理的api函數(shù)和導出

函數(shù)的代碼。

c語言寫的程序怎么樣生成.dll文件?

dll制作步驟:

1.編寫dll函數(shù)實現(xiàn)源代碼hello.c

#include

int say_hello(char* name)

{

printf( "hello %s\n ", name);

return 1;

}

2.編寫dll函數(shù)輸出定義文件hello.def.

LIBRARY hello

EXPORTS

say_hello @1

3.編譯dll源碼,生成dll,lib文件.

3.1 新建命令行窗口

3.2 設置PATH ?? INCLUDE ?? LIB 3個環(huán)境變量.

SET PATH=K:\vcnet\vc7\bin;%PATH%

SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%

SET LIB=K:\vsnet\Vc7\lib;%LIB%

3.3 編譯hello.c

cd K:\Source\dllsample (hello.c和hello.def所在目錄)

cl /c hello.c

3.4 鏈接hello.obj,生成hello.dll,hello.lib兩個文件.

link /def:hello.def /dll hello.obj

4.測試dll函數(shù).

4.1 編寫測試代碼 test.c

extern int say_hello(char* name);

int main(int argc,char** argv)

{

say_hello( "robbie ");

return 0;

}

4.2 編譯測試代碼test.c

cl /c test.c

4.3 鏈接test.obj和 hello.lib,生成可執(zhí)行文件test.exe

link test.obj hello.lib

4.4 運行test.exe,屏幕輸出:

hello robbie

至此,一個dll構造完畢.

c++調用dll導出函數(shù)

//第一種方法_靜態(tài)調用法

1:在DLL的cpp中將函數(shù)聲明為導出,你已經完成了第一步.

2: 在exe的cpp中加上一句 #pragma comment(lib, "你生成的dll的lib文件") 生成dll后會有一個xxx.lib的文件,保存到exe的目錄中.

3:聲明一種類型,在exe的cpp中聲明上面的函數(shù)類型. 

4:調用函數(shù)

//第二種方法動態(tài)調用法

1: 在exe的cpp中使用LoadLibary()把我生成的dll載入.

2: 使用typedef int __stdcall (*pfunc) (const char *, const char *, cstring, int) 定義一個函數(shù)類型.

3: pfunc funcaddr = GetProcAddrress() 通過GetProcAddress()獲取函數(shù)的地址.

4: 調用 函數(shù)

 注意:

 你寫的代碼有點小問題,在導出函數(shù)的前面先加上 extern "C" ,這樣才能保證dll中的函數(shù)名是GenStarPic,否則導出函數(shù)的名字會變成一堆亂碼,你需要借助LordPe或者depends等工具查看函數(shù)名. 


分享標題:c語言導出dll函數(shù) dll導入函數(shù)
網(wǎng)頁地址:http://weahome.cn/article/doospcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部