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;
}
最后更新于 2023-10-14 16:46:46 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章