通过UDP通过Visual c++发送得到很多未解析的外部符号__imp__sendto@24
Sending over UDP by Visual C++ get lot of unresolved external symbol __imp__sendto@24
我安装了Visual Studio 2013 Ultimate。我尝试了这个代码通过UDP发送任何东西(它是第15或可能是后来的代码我尝试),我得到了一堆奇怪的错误。我在项目中缺少什么?
#include "stdafx.h"
#include <iostream>
#include <winsock2.h>
using namespace std;
int main()
{
//init
int server_length;
int port = 123;
const int STRLEN = 256;
char recMessage[STRLEN];
char sendMessage[STRLEN];
char *sendMes = "SERVER READY";
WSADATA wsaData;
SOCKET mySocket;
SOCKET myBackup;
SOCKET acceptSocket;
sockaddr_in myAddress;
//create socket
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != NO_ERROR)
{
cerr << "Socket Initialization: Error with WSAStartupn";
system("pause");
WSACleanup();
exit(10);
}
mySocket = socket(AF_INET, SOCK_DGRAM, 0);
if (mySocket == INVALID_SOCKET)
{
cerr << "Socket Initialization: Error creating socket" << endl;
system("pause");
WSACleanup();
exit(11);
}
myBackup = mySocket;
//bind
myAddress.sin_family = AF_INET;
myAddress.sin_addr.s_addr = inet_addr("0.0.0.0");
myAddress.sin_port = htons(port);
if (bind(mySocket, (SOCKADDR*)&myAddress, sizeof(myAddress)) == SOCKET_ERROR)
{
cerr << "ServerSocket: Failed to connectn";
system("pause");
WSACleanup();
exit(14);
}
cout << endl;
while (1)
{
server_length = sizeof(struct sockaddr_in);
recvfrom(mySocket, recMessage, STRLEN, 0, (SOCKADDR*)&myAddress, &server_length);
cout << recMessage << endl;
sendto(mySocket, sendMes, strlen(sendMes), 0, (SOCKADDR*)&myAddress, server_length);
}
return 0;
}
Error 11 error LNK1120: 8 unresolved externals c:usersrdocumentsvisual studio 2013ProjectsConsoleApplication17DebugConsoleApplication17.exe 1 1 ConsoleApplication17
Error 3 error LNK2019: unresolved external symbol __imp__bind@12 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 4 error LNK2019: unresolved external symbol __imp__htons@4 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 5 error LNK2019: unresolved external symbol __imp__inet_addr@4 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 6 error LNK2019: unresolved external symbol __imp__recvfrom@24 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 7 error LNK2019: unresolved external symbol __imp__sendto@24 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 8 error LNK2019: unresolved external symbol __imp__socket@12 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 10 error LNK2019: unresolved external symbol __imp__WSACleanup@0 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Error 9 error LNK2019: unresolved external symbol __imp__WSAStartup@8 referenced in function _main c:UsersRdocumentsvisual studio 2013ProjectsConsoleApplication17ConsoleApplication17ConsoleApplication17.obj ConsoleApplication17
Warning 2 warning C4101: 'acceptSocket' : unreferenced local variable c:usersrdocumentsvisual studio 2013projectsconsoleapplication17consoleapplication17consoleapplication17.cpp 21 1 ConsoleApplication17
Warning 1 warning C4101: 'sendMessage' : unreferenced local variable c:usersrdocumentsvisual studio 2013projectsconsoleapplication17consoleapplication17consoleapplication17.cpp 16 1 ConsoleApplication17
stdafx.h需要在其他任何内容之前包含,否则winsock2.h和iostream包含将被忽略。
stdafx.h是一个由Microsoft Visual Studio IDE向导生成的文件,它描述了标准系统和特定于项目的包含文件,这些文件经常使用,但很少更改。
兼容的编译器(例如Visual c++ 6.0及更新版本)将预编译此文件以减少总体编译时间。Visual c++不会编译源文件中#include "stdafx.h"之前的任何内容,除非编译选项/Yu'stdafx.h'未选中(默认情况下);它假设源代码中的所有代码(包括该行)都已编译。
(http://en.wikipedia.org/wiki/Precompiled_header)
编辑:您需要包含winsock的库Ws2_32。您可以通过添加#pragma comment(lib, "Ws2_32.lib")来实现。如果想让它在多个IDE上工作,可以在IDE中添加库。(http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629%28v=vs.85%29.aspx)
相关文章:
- 通过重命名C++中的符号来减小二进制大小
- 如何通过 JNI 将 C 字符串表情符号传递给 Java
- 如何通过输入十进制数打印UTF-8符号?
- 如何通过组合红色和蓝色无符号字节来优化混合?
- 是否有 GCC 警告,用于使用 C 库中的符号而不是通过命名空间 std?
- Lapack函数DGTSV通过C /Visual Studio提供未解决的外部符号
- 如何使用 boost asio 通过 UDP 套接字发送无符号字符的 std::vector?
- 通过无符号 char 别名进行对象访问,加载和存储时会发生什么?
- 通过参考符号通过
- 将 C++ 转换为 Python 通过引用返回无符号 char*
- 通过使用新操作员创建对象会导致未解决的外部符号错误C FTGL
- 在c++中通过串行发送一个带符号的整数作为字节,Arduino读取它
- 通过符号链接包含共享库会导致未定义的引用
- 无符号整数的类型双关语是否可以通过消除 >= 比较的需要来加快边界检查速度?
- 在C++中通过引用传递无符号字符数组
- 通过AES_CFB模式以位流的形式加密无符号的 int 值
- 如果使用无符号整数,则通过减去1将基于1的编号转换为基于0的编号是否安全
- 为什么WinDbg无法通过Service Pack 2 x86零售符号下载从Windows Server 2003加载符
- 不能使用parameter作为无符号整型,通过引用传递
- 如何通过符号在内存中的地址获取有关符号的更多信息