gpt4 book ai didi

c++ - 从 DLL 中建立 tcp 连接

转载 作者:行者123 更新时间:2023-11-28 06:50:09 25 4
gpt4 key购买 nike

我正在尝试编写一段代码,允许我从 DLL 文件中建立 TCP 连接。这是我的情况:我有一个 ruby​​ 应用程序需要能够通过套接字发送和接收数据,但由于它将运行的环境,我无法访问 native ruby​​ 套接字方法。但是我可以访问一个 DLL 文件并运行其中的函数,所以我想我应该为 winsock 创建一个包装器。不幸的是,尝试使用一段应该连接到普通 C++ 应用程序中的 TCP 套接字的代码会引发大量 LNK2019 错误,我终生无法解决。

这是我用来连接的方法:

//Socket variable
SOCKET s;

//Establishes a connection to the server
int server_connect(char* addr, int port)
{

//Start up Winsock
WSADATA wsadata;

int error = WSAStartup(0x0202, &wsadata);

//Check if something happened
if (error)
return -1;



//Verify Winock version
if (wsadata.wVersion != 0x0202)
{
//Clean up and close
WSACleanup();
return -2;
}

//Get the information needed to finalize a socket
SOCKADDR_IN target;
target.sin_family = AF_INET; //Address family internet
target.sin_port = _WINSOCKAPI_::htons(port); //Port #
target.sin_addr.s_addr = inet_addr(addr);

//Create the socket
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
{
return -3;
}

//Try connecting
if (connect(s, (SOCKADDR *)&target, sizeof(target)) == SOCKET_ERROR)
{
//Failed to connect
return -4;
}
else
{
//Success
return 1;
}
}

我收到的确切错误是:

Error   1   error LNK2019: unresolved external symbol _closesocket@4 referenced in function _server_disconnect  [Project Path]
Error 2 error LNK2019: unresolved external symbol _connect@12 referenced in function _server_connect [Project Path]
Error 3 error LNK2019: unresolved external symbol _htons@4 referenced in function _server_connect [Project Path]
Error 4 error LNK2019: unresolved external symbol _inet_addr@4 referenced in function _server_connect [Project Path]
Error 5 error LNK2019: unresolved external symbol _socket@12 referenced in function _server_connect [Project Path]
Error 6 error LNK2019: unresolved external symbol _WSAStartup@8 referenced in function _server_connect [Project Path]
Error 7 error LNK2019: unresolved external symbol _WSACleanup@0 referenced in function _server_connect [Project Path]
Error 8 error LNK1120: 7 unresolved externals [Project Path] 1 1

非常感谢!

最佳答案

这是预料之中的。在现代 Windows 系统上将您的项目与 Ws2_32.lib 链接。您的可执行文件将选择同名的 DLL。

关于c++ - 从 DLL 中建立 tcp 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com