搜索
查看: 782|回复: 10
打印 上一主题 下一主题

求助

[复制链接]
跳转到指定楼层
楼主
发表于 2015-7-21 19:04:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
为什么编译器说printf没定义,不是加了stdio.h,求高手解答
代码:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <stdafx.h>
#include <winsock2.h>
void ShowError()
{                 
TCHAR *lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,0,NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR);
}
void SocketTest()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData);
SOCKET sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(IPPORT_SMTP);
sa.sin_addr.S_un.S_addr = inet_addr("220.181.12.13");
if(connect(sock,(SOCKADDR*)&sa,sizeof(sa))==SOCKET_ERROR)
{
  ShowError();
  return;
}
char buffer[256];
ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
recv(sock,buffer,sizeof(buffer)/sizeof(TCHAR),0);
printf("%s\n",buffer); //printf("%d\n",c);
TCHAR SEND1[] = "QUIT\n";
send(sock,SEND1,sizeof(SEND1)/sizeof(TCHAR),0);
ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
recv(sock,buffer,sizeof(buffer)/sizeof(TCHAR),0);
printf("%s\n",buffer);
closesocket(sock);
WSACleanup();
}
int main(void)
{
SocketTest();
system("pause");
return 0;
}
错误信息:
--------------------Configuration: mail移植版 - Win32 Debug--------------------
Compiling...
mail移植版.cpp
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\mail移植版\mail移植版.cpp(33) : error C2065: 'printf' : undeclared identifier
执行 cl.exe 时出错.
mail移植版.exe - 1 error(s), 0 warning(s)
用的vc6.0

沙发
发表于 2015-7-21 19:23:48 | 只看该作者
<winsock2.h>后面加上#pragma comment(lib, "ws2_32")
板凳
 楼主| 发表于 2015-7-21 19:58:50 | 只看该作者
谢谢,我试试
地板
 楼主| 发表于 2015-7-21 20:00:25 | 只看该作者
貌似没什么效果,不过还是谢谢你
5#
 楼主| 发表于 2015-7-21 20:00:50 | 只看该作者
。。。printf没有定义。。。
6#
 楼主| 发表于 2015-7-21 20:02:33 | 只看该作者
是不是 这里的关系?
7#
发表于 2015-7-21 21:38:18 | 只看该作者
楼主写的win程式,入口函数写错了吧
8#
 楼主| 发表于 2015-7-22 09:23:07 | 只看该作者
要这样写?
9#
发表于 2015-9-7 22:46:11 | 只看该作者
哼,你还说自己水平不错,用winapi呗,用什么printf啊?对吧!
10#
发表于 2016-8-4 11:14:43 | 只看该作者
[mw_shl_code=c,true]#include <winsock2.h>/*要放到windows.h前头*/
#include <windows.h>
#include "stdafx.h"/*要这么写 因为stdafx.h在项目文件夹  而不是include目录*/
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32")/*要包含这个!*/
void ShowError()
{                 
TCHAR *lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,0,NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR);
}
void SocketTest()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData);
SOCKET sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(IPPORT_SMTP);
sa.sin_addr.S_un.S_addr = inet_addr("220.181.12.13");
if(connect(sock,(SOCKADDR*)&sa,sizeof(sa))==SOCKET_ERROR)
{
  ShowError();
  return;
}
char buffer[256];
ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
recv(sock,buffer,sizeof(buffer)/sizeof(TCHAR),0);
printf("%s\n",buffer);
TCHAR SEND1[] = "QUIT\n";
send(sock,SEND1,sizeof(SEND1)/sizeof(TCHAR),0);
ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
recv(sock,buffer,sizeof(buffer)/sizeof(TCHAR),0);
printf("%s\n",buffer);
closesocket(sock);
WSACleanup();
}
int main(void)
{
SocketTest();
system("pause");
return 0;
}[/mw_shl_code]实测通过!
11#
发表于 2016-8-8 20:33:25 | 只看该作者
还是楼上给力
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表