鱼C论坛

 找回密码
 立即注册
查看: 2920|回复: 4

程序运行不了

[复制链接]
发表于 2012-1-10 11:14:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看<C语言也能办大事>视频第11集,我把代码考到vc++6,在WIN 7运行,视频里面说的的问题我都注意到了,但是仍然运行不了,是不是因为我用WIN7系统的缘故啊,
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-10 12:29:55 | 显示全部楼层
刚才去XP运行了一下还是不行,看来不是系统的问题,明明编译的时候是0错误0警告,可是就是不能运行。
我在project的setting选link   然后在object/library modules:下面的编辑框,直接手输入添加 winsock32.lib 或ws2_32.lib这样不对吗?我不知道应该怎么添
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-10 12:42:35 | 显示全部楼层
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "winsock2.h"
#include "resource.h"
#include "MainDlg.h"
/*
Template designed by RuPeng.com. Please visit http://www.rupeng.com for more information
如鹏网(http://www.rupeng.com)大学生计算机学习社区,提供大量免费视频学习教程,提供个性化一对一学习指导
*/
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
                HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
                {
                        SocketTest();
                }
        break;
        default:
                break;
    }
}
void SocketTest()
{

WSADATA wsaData;

//初始化Socket库

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);

//123.125.50.135是ping smtp.163.com出来的,后面会讲使用gethostbyname来直接从

//主机名得到ip地址

sa.sin_addr.S_un.S_addr = inet_addr("123.125.50.135");

//为什么不用设置客户端的端口,难道不需要客户端的端口吗?

if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)

{

ShowError();

return;

}

//做事情。把大象放冰箱总共分几步

closesocket(sock);

WSACleanup();
}

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 Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}


编译完全通过,执行的时候出现8个报错

--------------------Configuration: DC - Win32 Debug--------------------
Linking...
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall WSACleanup(void)" (__imp_?WSACleanup@@YGHXZ)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall closesocket(unsigned int)" (__imp_?closesocket@@YGHI@Z)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall connect(unsigned int,struct sockaddr const *,int)" (__imp_?connect@@YGHIPBUsockaddr@@H@Z)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned long __stdcall inet_addr(char const *)" (__imp_?inet_addr@@YGKPBD@Z)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned short __stdcall htons(unsigned short)" (__imp_?htons@@YGGG@Z)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned int __stdcall socket(int,int,int)" (__imp_?socket@@YGIHHH@Z)
MainDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall WSAStartup(unsigned short,struct WSAData *)" (__imp_?WSAStartup@@YGHGPAUWSAData@@@Z)
Debug/DC.exe : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.

DC.exe - 8 error(s), 0 warning(s)


似乎是链接库的问题,可是我按视频的方法添加的啊,
难道添加的不对,,没接触过,希望大家帮帮忙
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-10 13:06:45 | 显示全部楼层
终于通过了,愁死了,原来视频里面要求添加的头文件winsock2.h   在我这里不行,改成winsock.h就好了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-10 14:17:39 | 显示全部楼层
看起来是没什么问题了,可还是不太对劲,跟随视频继续写下边的代码收到消息和发送消息,可是消息框里面什么也没有,TCHAR buff[256];
ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));

recv(sock,buff,sizeof(buff),0);

MessageBox(NULL,buff,"返回消息",0);

TCHAR hello[]="QUIT\n";
send(sock,hello,sizeof(hello)/sizeof(TCHAR),MB_OK);

ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
recv(sock,buff,sizeof(buff),0);
MessageBox(NULL,buff,"返回消息2",MB_OK);


而且反应特别慢,相反当我把网络断开或胡乱写网址时,反应速度到特别快,但是蹦出来的消息框不是错误提示啊。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-10 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表