【问题标题】:Implicit declaration of dlsym is invalid in c99dlsym 的隐式声明在 c99 中无效
【发布时间】:2012-03-27 16:00:16
【问题描述】:

我在文件中有所需的导入。我正在尝试导入现有项目并在 Xcode(4.2) 中编译。我还需要添加其他内容吗?

【问题讨论】:

  • Mac OS X Lion 上/usr/include/dlfcn.h 中的代码无条件声明dlsym();唯一会阻止它被声明的定义是标题保护_DLFCN_H_,如果文件被多次包含,它可以防止损坏。我对Objective C的了解不够多,无法知道#import是否有任何其他含义,而不是#include,但由于缺少dlsym()RTLD_SELF,似乎存在一些关键区别。查找dlfcn.h 以外的意外文件/usr/include。如果最坏的情况发生,请将#error I am ere 添加到标题以确保使用它。
  • 我在我的机器上找不到任何dlfcn.h 文件或在任何文件中保护_DLFCN_H_,除了这个导入语句#import <dlfcn.h>。我在/usr/include 中也没有看到任何这样的文件。
  • 找不到文件令人费解。您是否尝试过查看/Developer?我在那里没有找到太多东西(但/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include/dlfcn.h 是一个发现),但我确实在/usr/include 中有(可能是旧的)东西。您是否能够成功构建其他项目?
  • 递归 grep 正在慢慢来;我还找到了/Developer/SDKs/MacOSX10.7.sdk/usr/include/dlfcn.h 和其他一些版本的类似文件。
  • @JonathanLeffler 是的,在 finder 和聚光灯下找不到。这是我第一次开始使用 iOS,也是我尝试导入的第一个项目。

标签: objective-c xcode xcode4.2 osx-lion c99


【解决方案1】:

通过将方法包含在以下内容中已修复两个错误:

#ifdef RTLD_SELF

      //initialize method

#endif

得到http://opensource.apple.com/source/dyld/dyld-45.1/unit-tests/test-cases/dlsym-RTLD_SELF/main.c?txt的提示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多