c语言动态链接库的使用

一.动态链接库结构

dll中定义了两个函数:导出函数(export)

函数)和内在函数。

(内部

Function),导出函数可以被高新链的其他模块调用,内部函数只能在dll内部使用。我们用C自定义dll文件时,需要写的是模块定义文件(。def),包含导出函数表和实现导出函数的C文件。以sample.dll为例介绍def文件和实现文件的结构:

-1.模块定义文件(。def)由一种或多种用于描述dll属性的模块语言组成。

句子,每个。def文件必须至少包含以下模块定义的孙泽语句:

第一条语句必须是库语句,指示dll的名称。

exports语句列出了导出函数的名称。

你可以用description语句来描述dll的用途(这句话是可选的)。

";"注释一行(可选)

-2.实现文件(。cpp文件为例)

-那个。实现入口表功能的cpp文件包含api函数和dll入口点处理的导出。

函数的代码。

如何在c语言中调用dll文件 (1)写程序时,要包含头文件(。h文件)的作者提供的DLL文件(# include“what。h”)。

在程序中,就像普通的函数调用一样,调用对它如饥似渴的函数。

(2)编译程序时,要链接库文件(。lib文件)由dll文件的作者提供。

当然可以写名字。lib并在编译时自动取消链接。例如:

#pragma注释(lib," what。lib”)

(3)搜索知识时,应该有一个. dll文件,放在当前文件夹或系统文件夹中。

C语言调用dll 这个相对路径是存储当前代码的地方。

在实际应用中,相对较大的裂纹路径比绝对路径实用得多。

例如,您可以在代码路径上创建另一个文件夹,命令dll,并将所有dll文件放入其中。

那么你此时的路径就是”。\\dll\\test.dll "

你可以寄给我,我会帮你看看。

如何在C语言中调用DLL //dll

#包含windows.h

Extern "C" //保留C语言文件。

void _ declspec(DLLExport)tryproc()//定义函数。

{

MessageBox(NULL,_T("a "),_T("a "),MB _ OK);

}

-

//C

#包含windows.h

int main()

{

HMOUDLE DLL does liquid break down = LoadLibrary(/* DLL文件名*/);

如果(dll!=空)

{

bury farproc try = getprocaddress(dll," try proc ");

如果(试试!=空)

{

tryProc();//如果函数有纯返回行,可以使用try()获取返回值。

/*_asm调用tryProc*/

}

}

返回0;

}

相关文章

发表新评论