iOS上的条件链接库

iOS上的条件链接库,ios,xcode,Ios,Xcode,我想有条件地链接一个库我有这个用于iOS设备的库,但我没有用于模拟器的库。我使用的是Xcode 4.6和iOS 6.1 我读了一个问题和两个类似的问题: -弱库链接器标志 我尝试使用以下标志构建项目: -weak_library LibraryNameWithPath -weak-lShortLibraryName 但是,它给了我一个错误: ld: file not found: LibraryNameWithPath -弱-l链接器标志 我尝试使用以下标志构建它: -weak_libra

我想有条件地链接一个库我有这个用于iOS设备的库,但我没有用于模拟器的库。我使用的是Xcode 4.6和iOS 6.1

我读了一个问题和两个类似的问题:

-弱库链接器标志

我尝试使用以下标志构建项目:

-weak_library LibraryNameWithPath
-weak-lShortLibraryName
但是,它给了我一个错误:

ld: file not found: LibraryNameWithPath
-弱-l链接器标志

我尝试使用以下标志构建它:

-weak_library LibraryNameWithPath
-weak-lShortLibraryName
得到了同样的结果:

ld: library not found for -lShortLibraryName
思想

为什么见鬼,如果它被明确标记为弱链接,它会检查库的存在吗


有没有一种方法可以在dlopen、dlclose和friends的构建时与运行时使用情况之间进行条件链接?

我实际上没有尝试直接使用构建标志来实现这一点,但我已经使用Xcode GUI设置实现了这一点。选择构建目标,然后选择构建阶段,然后选择将静态库添加到要链接的二进制文件列表中

但是,从右侧的“必需/可选”菜单中选择“可选”,这不是默认值

由于这是一个静态库,我认为您需要在代码中加入一些预处理器保护,以禁止在模拟器中使用该库:

#if TARGET_IPHONE_SIMULATOR
   NSLog(@"do nothing here!");
#else
   HelloLibrary* hl = [[HelloLibrary alloc] init];
   NSString* result = [hl helloLibraryFoo];
#endif
我没有做任何其他工作,使这项工作没有其他构建设置被修改

在构建模拟器时,我只收到以下警告:

ld:警告:忽略文件 /Users/me/Desktop/code/MyAppName/libHelloLibrary.a,文件是为 不是要链接的体系结构的存档i386: /Users/me/Desktop/code/MyAppName/libHelloLibrary.a


这是你想要的吗@AnoopVaidya:答案是use-weak_库,它对我不起作用。谢谢你。我正在尝试为CoreAudioKit做这件事,它是通过蓝牙实现MIDI所必需的,但在模拟器中不可用。将框架更改为可选并在导入周围的代码中使用if无助于删除library not found消息。完全删除框架是可行的。“是的,我想最初的问题是关于静态库的,但是CoreAudioKit是一个动态框架,所以你的问题有点不同。”。你能问一个新问题吗?请在这里的评论中贴一个新问题的链接,随时点击我。谢谢,谢谢!问题就在这里,感谢您的帮助!