首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为iOS应用程序构建rabbitmq-c

无法为iOS应用程序构建rabbitmq-c
EN

Stack Overflow用户
提问于 2015-05-14 16:12:57
回答 1查看 835关注 0票数 0

我正在尝试在一个RabbitMq应用程序中使用iOS。作为推荐,我使用的是这个目标-C 包装器,它规定:没有什么可构建的。只需将源文件和头文件包含到Xcode项目中,并将其链接到librabbitmq-c。但是,到目前为止,我还无法构建这个应用程序。我正在使用GitHub上可用的最后一个稳定版本。

1/我尝试在我的项目中包含所有文件(不管是rabbitmq-objc还是rabbitmq-c),并按照建议的这里进行构建。在替换了几个类型(将/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang替换为u_int8_t)并按照XCode的建议解决了一些导入("amqp.h“而不是< amqp.h>)后,我得到了以下错误:命令u_int8_t失败,退出代码254失败。我对项目进行了深度清理,删除了~/Library/Developer/Xcode/派生数据的内容,但没有运气。

[2]然后,我尝试通过命令行使用cmake构建rabbitmq-c:

代码语言:javascript
复制
mkdir build && cd build
cmake ..
cmake --build . --config Release

然后作为动态库导入到我的项目中。在项目中链接时,XCode会抱怨iOS模拟器的构建,但是针对为MacOSX文件构建的dylib进行链接。我读过几篇关于如何处理这个问题的文章,但我不知道具体如何进行。

3/因此,我终于将CMake.app用于MacOS,将生成器设置为XCode。我导入了作为动态库构建的rabbitmq-c.xcodeproj,并将头路径设置为正确的文件夹。在将其他链接器标志设置为'/Users/Guillaume/Library/Developer/Xcode/DerivedData/RabbitMQSandbox-bvhczedxhtejhxcwdqmdewzzexjj/Build/Products/Debug-iphonesimulator/librabbitmq.4.0.0.dylib'. -all_load后,仍然会得到一个错误:没有这样的文件或目录:-ObjC

我正在失去希望。有人能指点我朝正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 13:08:15

我终于找到了,这是供进一步参考的。

1/获取最新的兔c狂犬病库。

2/确保Cmake已更新(2.6或更高)

3/安装iOS-cmake

4/在rabbitmq-c目录中(更改模拟器或设备的OSX_ARCHITECTURES和IOS_PLATFORM标志)

代码语言:javascript
复制
mkdir build.ios && cd build.ios
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/iOS.cmake 
-DIOS_PLATFORM=SIMULATOR (resp. OS) 
-DCMAKE_IOS_DEVELOPER_ROOT=/Applications/Xcode.app/Contents/Developer     
-DCMAKE_IOS_SDK_ROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk 
-DCMAKE_OSX_ARCHITECTURES=x86_64 (resp. i386)
-DBUILD_STATIC_LIBS=True 
-DENABLE_SSL_SUPPORT=False 
-GXcode ..

5/在build.os/librabbitmq中,将目录Debug重命名为Debug-iphone仿真器。在XCode中打开librabbitmq-c.xcodeproj,选择目标rabbitmq-静态,构建并关闭该项目。

6/导入将使用librabbitmq.a库的项目。在构建设置中,确保Always Search User Paths设置为Yes,并且User Header Search Path包含到rabbitmq-c/librabbitmq和rabbitmq-c/build.ios/rabbitmq-c的两个路径。

7/复制项目中的rabbitmq-objc类,并为这些类设置-fno-objc弧标志。

8用uint8u_int8_t,用#import < Foundation/Foundation.h>代替#import < Cocoa/Cocoa.h>,用#import "amqp.h"#import "amqp_framing.h"代替#import < amqp.h>#import < amqp_framing.h>

9在AMQPConsumer.m中,在函数amqp_basic_consume中添加缺少的参数amqp_basic_consume,在AMQPExchange.m中添加缺失参数

代码语言:javascript
复制
#define AMQP_EXCHANGE_TYPE_DIRECT @"direct" 
#define AMQP_EXCHANGE_TYPE_FANOUT @"fanout"
#define AMQP_EXCHANGE_TYPE_TOPIC @"topic"

10建造项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30242125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档