用C语言编写DLL
一.动态链接库(dll)结构
——dll中定义有两种函数:导出函数(export
function)和内部函数
(internal
function),导出函数可以被高凯链其他模块调用,内部函数只能在dll内部使用。我们在用c++定制dll文件时,需要编写的就是包含导出函数表的模块定义文件(.def)和实现导出函数功能的c++文件。下面以sample.dll为例介绍def文件和实现文件的结构:
——1.模块戚孙定义文件(.def)是由一个或者多个用于描述dll属性的模块语
句组成的文本文件,每个.def文件至少必须包含以下模块定义孙则语句:
第一个语句必须是library语句,指出dll的名字。
exports语句列出被导出函数的名字。
可以使用description语句描述dll的用途(此句可选)。
“;”对一行进行注释(可选)
——2.实现文件(.cpp文件为例)
——实现入口表函数的.cpp文件中,包含dll入口点处理的api函数和导出
函数的代码。
c语言怎么调用dll文件
(1)编写程序时,你要包含(#include “什么.h”) dll文件作者世备提供 的 头文件(.h文件) 。
程序里,便和普通函数调用一样,去调用猛饥它的函数。
(2)程序编译时,你要链接 dll文件作者提供 的 (.lib文件) 库文件。
当然,你可以在源程序里把.lib 名字 写上,编译时自动去链接,例子:
#pragma comment (lib, “什么.lib”)
(3)执行搜知毁时,要有 .dll 文件. 放在当前文件夹或系统文件夹里。
C语言调用dll
这个相对路径是滚宴闭你当前代码存放的位置.
实际应用中相对大裂路径比绝对路径实用多了.
比如你可以再代码路径祥亏上再创建一个文件夹,命令dll,里面放所有的dll文件
那么你此时路径”.\\dll\\test.dll”
你可以发给我,我帮你看看
C语言如何调用DLL
//dll
#include windows.h
extern “C” //保持C语言文件
void _declspec ( dllexport ) tryProc() //定义函数
{
MessageBox(NULL,_T(“a”),_T(“a”),MB_OK);
}
————————————-
//C
#include windows.h
int main()
{
HMOUDLE dll 做液哗= LoadLibrary(/*DLL文件名*/);
if(dll != NULL)
{
埋肆 FARPROC try = GetProcAddress(dll,”tryProc”);
if(try != NULL)
{
tryProc();//假如函数有返回值纯行,可以用try()得到返回值
/*_asm call tryProc*/
}
}
return 0;
}