首页 > 编程知识 正文

c语言函数声明(用c语言生成一个dll文件)

时间:2023-05-05 09:31:32 阅读:72589 作者:4342

本节介绍在Windows上加载DLL。 学习Linux套接字的读者可以跳过。

Winsock (windows套接字)编程依赖于系统提供的动态链接库(DLL ),有两个版本:

旧DLL为wsock32.dll,大小为28KB,对应的头文件为winsock1.h;

最新的DLL为ws2_32.dll,大小为69KB,相应的头文件为winsock2.h。

大多数Windows操作系统已经支持ws2_32.dll。 个人操作系统Windows 95 OSR2、Windows 98、Windows Me、Windows 2000、XP、Vista、windows7、Windows 98、windows10和服务器

在使用DLL之前,必须将DLL加载到当前程序中。 可以在编译时加载,也可以在程序运行时加载。 用《动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)》进行了说明。

这里使用#pragma命令在编译时加载。

#pragmacomment(lib,' ws2_32.lib ' ) ) ) ) ) ) ) 65

WSAStartup ()函数

在使用DLL之前,必须调用WSAStartup ()函数进行初始化,以指示WinSock规范的版本。 其原型如下。

int wsa startup (wordwversionrequested,LPWSADATA lpWSAData );

wVersionRequested是WinSock规范的版本号,低字节是主版本号,高字节是次版本号(修改版本号); lpWSAData是指向WSAData结构体的指针。

关于WinSock规格

WinSock规格的最新版本号为2.2,旧的为2.1、2.0、1.1、1.0。 ws2_32.dll支持所有规范,而wsock32.dll仅支持1.0和1.1。

wsock32.dll现在可以很好地支持TCP/IP通信程序的开发。 ws2_32.dll主要添加了对其他协议的支持,但建议使用最新版本2.2。

wVersionRequested参数用于指示要使用的版本号。 其类型为WORD,等效于unsigned short,且为整数,因此必须使用MAKEWORD )宏函数转换版本号。 例如:

制造工人(1,2 ); //主版本号为1,次版本号为2,返回0x0201

制造工人(2,2 ); //主版本号为2,次版本号为2,返回0x0202

关于WSAData结构

WSAStartup ) )成功执行函数后,有关ws2_32.dll的信息将写入WSAData结构变量。 WSAData的定义如下:

类型结构wsadata {

魔兽世界; //ws2_32.dll推荐的版本号

魔兽世界; //ws2_32.dll支持的最高版本号

ws2 _ 32 .以null结尾的字符串,用于说明dll的实现和供应商信息

charszdescription [ wsa description _ len1];

ws2 _ 32 .以null结尾的字符串,用于说明dll的状态和配置信息

charszsystemstatus [ wsa sys _ status _ len1];

无符号短整型I maxsockets; //2.0以后不使用

无符号短整型imaxudpdg; //2.0以后不使用

char FAR *lpVendorInfo; //2.0以后不使用

} WSADATA,*LPWSADATA;

最后三个成员已经被舍弃,szDescription和szSystemStatus中包含的信息几乎没有实用价值,读者只需关注前两个成员即可。 请看下面的代码:

#包含

#包含

#pragmacomment(lib,' ws2_32.lib ' ) ) ) ) ) ) ) 65

int main () )。

WSADATA wsaData;

WSAstartup(makeword ) 2,2 ),wsaData );

printf(wversion:%d.%dn )、lobyte(Wsadata.wversion )、lobyte(Wsadata.wversion ) );

printf (whighversion : % d.% d (n ),lobyte ) wsadata.whighversion,hibyte ) wsadata.whighversion );

printf (SZ描述: % sn (,wsadata.SZ描述);

printf(szsystemstatus3360%sn (,wsaData.szSystemStatus ) );

返回0;

}

执行结果:

wVersion: 2.2

wHighVersion: 2.2

szDescription: WinSock 2.0

szsystemstatus :运行

ws2_32.dll支持的最高版本为2.2,建议的版本也为2.2。

因此,WinSock编程的第一步是加载ws2_32.dll,调用WSAStartup )函数进行初始化,并指定要使用的版本号。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。