错误LNK2019。未解决的外部。请告诉我我搞砸了什么。

时间:2014-04-17 19:40:44

标签: c++ c

我和我的学校一直在使用相同的代码几周了。我不知道我做了什么修复了你的问题,我所知道的是每当我添加代码时,它们都会回来。我已经阅读了MSDN上的所有内容,我几乎阅读了关于链接器和设置的所有内容,我仍然不知道。请帮我。我理解问题是链接器没有将头文件连接到库?

int TCPEchoed(SOCKET fd){
    char    buf[BUFSIZE];
    int clientData;
    clientData = recv(fd, buf, sizeof buf, 0);
    while (clientData != SOCKET_ERROR && clientData > 0) 
    {
        buf[clientData] = '\0';
        fprintf(stderr, buf);
        clientData = recv(fd, buf, sizeof buf, 0);
    }
    if (clientData == SOCKET_ERROR)
    {
        fprintf(stderr, "echo recv error: %d\n", GetLastError());
    }
    closesocket(fd);
    return 0;
}

这是导致可怕错误的最新功能。 “错误LNK2019:未解析的外部符号”int __cdecl TCPechoed(unsigned int)“(?TCPechoed @@ YAHI @ Z)在函数”void __cdecl TCPecho(char const *,char const *)“中引用(?TCPecho @@ YAXPBD0 @ Z )“

我移动了一些东西,我能够发现错误是由这一行造成的。

_beginthread((void (*)(void *))TCPechoed, STKSIZE,  (void *)s);

当我把它扔进main函数时,我得到了main函数中发生的错误。我在顶部声明了函数:

int TCPechoed(SOCKET fd);

我很乐意,如果有人可以帮我解决这个问题,并告诉我它出了什么问题,所以我再也不会发布这个问题了。

感谢。

1 个答案:

答案 0 :(得分:2)

C和C ++区分大小写。您使用小写E声明了TCPechoed,但实际函数使用大写字母E称为TCPEchoed。您需要修复其中一个。