【问题标题】:struct addrinfo undeclared in Xcode 4struct addrinfo 在 Xcode 4 中未声明
【发布时间】:2011-05-24 17:01:37
【问题描述】:

在使用 Xcode 4 涉足某些套接字编程时,我遇到了一些奇怪的错误。我得到了 addrinfo 未声明的错误,尽管我只是从另一个有效的项目中复制代码(使用 Xcode 3 时) )。该项目主要是Objective-C,但我已经测试过用纯C创建另一个框架,错误仍然存​​在。

我包含以下框架:

  • ApplicationServices.framework
  • Cocoa.framework
  • AppKit.framework
  • Foundation.framework

也没有添加链接器标志。

但是,还有其他函数,例如 getaddrinfo(使用 addrinfo 本身!)。有什么想法吗?

【问题讨论】:

  • netdb.h 是否对结构进行类型定义?也许你以前的代码做了,但没有被复制过来。
  • @zjaquish:做到了! (几乎)我记得以前的项目是用 c++ 编写的,所以我猜想结构的语义发生了变化,在转换为 c/objective-c 时会导致此错误。我该怎么做才能解决这个问题?头文件 netdb.h 没有 typedef 结构。

标签: objective-c c sockets xcode4 ios-frameworks


【解决方案1】:

此问题与 IDE 无关,而是语言问题。在 C(因此是 Objective-c)和 C++(以前的项目是 =)中,结构的处理方式明显不同。所以我改变了这一行

addrinfo hints;

收件人:

struct addrinfo hints;

【讨论】:

    【解决方案2】:

    你有正确的导入吗?

    #import <netinet/in.h>
    #import <sys/socket.h>
    

    【讨论】:

    • 是的。我有:stdlib.h、sys/types.h、sys/socket.h、netdb.h、arpa/inet.h。可悲的是,添加 netinet/in.h 并没有帮助。
    【解决方案3】:

    快速 grep 显示 struct addrinfo 在 中声明。尝试明确包括在内。 (您的 Xcode 3 项目可能已在其前缀文件中包含该文件或其他包含该文件的标头。)

    【讨论】:

    • 我已经包含了。命令单击标题链接“#include ”表明它在那里声明,但没有。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多