dev c++ 调用WINDOWS API

CODE163 2010-05-29 12:22:44
本人新手啊。

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <iphlpapi.h>
#include <tchar.h>

#pragma comment(lib, "Ws2_32" )
#pragma comment(lib, "iphlpapi.lib")

int main()
{
HRESULT hr;
IPAddr remoteAddr;
ULONG pulMac[2];
ULONG ulLen;

remoteAddr = inet_addr ("10.86.3.6");
memset (pulMac, 0xFF, sizeof (pulMac));
ulLen = 6;

hr = SendARP (remoteAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d, Mac %08x %08x\n", hr, ulLen, pulMac[0], pulMac[1]);

size_t i, j;
char * szMac = new char[ulLen * 3];
memset(szMac, 0, ulLen*3);
PBYTE pbHexMac = (PBYTE) pulMac;

for (i = 0, j = 0; i < ulLen - 1; i++) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}

sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);

delete [] szMac;
return 0;
}



#pragma comment(lib, "Ws2_32" ) 这个##pragma comment 是C++的还是VC专用

DEV C++ GCC核心?不能引入WINDOWS的DLL? 怎么调用API 谢谢了! 这个...
...全文
224 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsting 2010-05-29
DEV C++的话,可以通过项目属性,直接添加要包含的库文件的文件名啊,
另外,如果你用的编译器是GCC,那么你的库文件必须是GCC需要的格式,
一般是 libxxxxx.a这种,比方说ws_32这个,你会找到一个叫“libws2_32.a”的文件,
至于你写的那个"iphlpapi.lib"应该无法被gcc使用。

题外话:DEV C++貌似是停止开发了,反正很久没有任何更新了,为什么不用CodeBlocks?
不过就算用了CodeBlocks,你的问题依然存在,因为这方面他俩是一样的,默认都用MinGW。
回复
CODE163 2010-05-29
在DEV C下loadlibrary 是不是就可以调用啊??
回复
hankcs 2010-05-29
貌似是VC平台的编译预选项,比如说pragma once
回复
fox000002 2010-05-29
GCC 编译器不支持 #pragma comment(lib, "") 这种宏而已

一般是通过在编译和链接命令中添加相应选项

对于 IDE 来说,就是设置 project 的编译和链接设置,加入相应的库文件即可

回复
budweiser 2010-05-29
#pragma 指令是一个非标准但被 编译器广泛支持的指令 也就是说标准里没有该指令 但基本上主流的编译器都支持, 当然就不限于VC了

还有DEV C++ 用的是MinGW, MinGW已经有了WindowsAPI, 你是用的时候包含 <windows.h> 然后记得链接libws2_32.a 就行了
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告