我有
#include <sys/socket.h>
recvfrom(s, dgram, sizeof(dgram), size, (struct sockaddr*)&adr, &x);
我在iOS中没有收到调用recvfrom的匹配函数。 但是Xocde确实展示了原型
recvfrom(int, void*, size_t, int, struct sockaddr *, socklen_t*)
那么,为什么Xcode在recvfrom上没有给出匹配的函数错误?
答案 0 :(得分:4)
其中一个参数的类型可能不正确。尝试通过终端使用gcc编译代码以获得更好的错误消息。出于某种原因,Xcode对此非常模糊。
确保第6个参数&x
中的x是'socklen_t *'(又名'unsigned int *'),而不是int。这就是导致我犯这个错误的原因。
答案 1 :(得分:0)
您需要在目标的libc.dylib
构建阶段中链接Link Binary With Libraries
库。
答案 2 :(得分:0)
将socklen_t用于x
socklen_t x = sizeof(servaddr);
uint8_t buffer[1024];
long nBytes =
recvfrom(socket, buffer, 1024, 0, (struct sockaddr *) &servaddr, &x)