标签: objective-c++

语言混合:模型和视图

考虑开发一个应用程序,其中模型将用C++编写(使用Boost),视图将使用Objective-C++(使用Cocoa Touch)编写.

哪些示例展示了如何集成C++和Objective-C++来开发iPhone应用程序?

c++ iphone cocoa-touch boost objective-c++

4
推荐指数
1
解决办法
187
查看次数

如何解决Objective-C++中出现的链接错误,而不解决Objective-C中出现的链接错误?

我正在将我的App Delegate文件从.m转换为.mm(Objective-C到Objective-C++),以便我可以访问用Objective-C++编写的第三方库.在Objective-C中,我的app委托构建并运行良好.但是当我更改扩展时,项目构建并且我得到链接错误,所有这些都是我用C编写的静态库中缺少的符号.错误是经典链接错误,格式如下:

"MyFunction(arguments)",引自:

- MyAppDelegate.o中的[MyAppDelegate myMethod]

未找到符号

所有问题都在app delegate对象中.我知道我已经准备好编译Objective-C++,因为我的ViewController文件是.mm.所以我的问题有几个部分.

首先,这些符号真的不存在,因为我不能使用它们吗?换句话说,是不是可以从Objective-C++文件访问普通的旧C函数?如果这是真的,那很不幸.我认为几乎所有的Objective-C代码,以及至少构建为.mm的所有Objective-C代码都是有效的Objective-C++.我错了吗?

如果没有,任何想法如何防止这些错误?是否存在Objective-C++中我不了解的标题规则?

感谢您的帮助.

c c++ iphone objective-c objective-c++

4
推荐指数
1
解决办法
1947
查看次数

Objective-C++块与Objective-C块

在Objective-C中我有有效的代码:

TestTwo.h:

@interface TestTwo : NSObject
-(void)test;
@end
Run Code Online (Sandbox Code Playgroud)

TestTwo.m:

@implementation TestTwo
-(void)test
{
    void (^d_block)(void) = 
    ^{
        int n;
    };
}
@end
Run Code Online (Sandbox Code Playgroud)

我真正想要的是一个Objective-C++类,它定义了一个类似的方法test.这是简化,但说明了意图.所以,在Objective-C++中,我有:

Test.h:

class Test
{
public:
    void TestIt();
};
Run Code Online (Sandbox Code Playgroud)

Test.mm:

#include "Test.h"

void Test::TestIt()
{
    void (^d_block)(void) = 
    ^{
        int n;
    };
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:'int Test :: n'不是'class Test'的静态成员.

如果我删除int n;没有错误.如何n在此上下文中的块中定义?

objective-c++ objective-c-blocks

4
推荐指数
1
解决办法
839
查看次数

目标c方法中的std :: vector

我在客观的C++中工作.我坚持的问题是我需要将std :: vector传递给目标c方法.这可能吗?下面是我当前的代码,我必须在向量定义方法中对向量进行计算(向数组成员添加偏移值),然后再将该方法作为C数组传递给该方法.理想情况下,我想在第二种方法中设置偏移值,从而拆分定义(将有几个)偏移量将是变量,与下面的示例不同.

因此,我想使用矢量而不是传入(b2Vec2*)vect

- (void)createterrain1 {

using namespace std;
vector<b2Vec2>vecVerts;
vector<int>::size_type i;
vecVerts.push_back(b2Vec2(-1022.5f / 100.0, -20.2f / 100.0));
vecVerts.push_back(b2Vec2(-966.6f / 100.0, -18.0f / 100.0));
vecVerts.push_back(b2Vec2(-893.8f / 100.0, -10.3f / 100.0));
vecVerts.push_back(b2Vec2(-888.8f / 100.0, 1.1f / 100.0));
vecVerts.push_back(b2Vec2(-804.0f / 100.0, 10.3f / 100.0));
vecVerts.push_back(b2Vec2(-799.7f / 100.0, 5.3f / 100.0));
vecVerts.push_back(b2Vec2(-795.5f / 100.0, 8.1f / 100.0));
vecVerts.push_back(b2Vec2(-755.2f/ 100.0, -9.5f / 100.0));
vecVerts.push_back(b2Vec2(-632.2f / 100.0, 5.3f / 100.0));
vecVerts.push_back(b2Vec2(-603.9f / 100.0, 17.3f / 100.0));
vecVerts.push_back(b2Vec2(-536.0f / 100.0, 18.0f / 100.0));
vecVerts.push_back(b2Vec2(-518.3f / …
Run Code Online (Sandbox Code Playgroud)

c++ objective-c objective-c++ box2d-iphone

4
推荐指数
1
解决办法
1万
查看次数

从C++类继承NSObject

我在情感上依赖于我的C++类,但我真的希望它进入一个tableview.

有没有办法从标准的c ++类中继承NSObject?

这是我试图做的:

class Model : NSObject {
public:
    NSString *key;
};
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢它.

它告诉我基本说明符必须是一个类.

我能做什么鬼鬼祟祟的事吗?

我应该把它作为标准的目标C++对象吗?

inheritance objective-c++ nsobject ios

4
推荐指数
1
解决办法
3274
查看次数

无法将Obj-C++子项目添加到Xcode Obj-C项目中

我创建了一个运行一些C++(OpenCV)代码的Objective-C++项目.它运行良好,一切运作良好.但后来我决定将这些例程作为子项目添加到我的MAIN PROJECT中,每当我尝试使用子项目类时都会出错.

问题是,我的SUBPROJECT使用.mm源文件,而我的MAIN PROJECT只使用.m源文件:在此输入图像描述

每次我尝试分配类DyOpenCV(DyOpenCv *opencv = [DyOpenCv alloc])时,我都会遇到很多错误:编译错误

这是Obj-C与Obj-Cpp项目合并的提示吗?这是一个特殊的界面,一旦我尝试从.m文件运行.mm文件?即使.mm文件来自子项目?是否有必要将我的子项目的所有库添加到我的项目中(我已经这样做了)?

干杯,

compiler-construction xcode objective-c objective-c++ armv7

4
推荐指数
1
解决办法
1100
查看次数

"初始化程序不是编译时常量"错误在.mm中有效吗?

我对自己正在观察的情况感到困惑,并且会喜欢一些见解.首先,我使用Xcode 5,将LLVM 5编译器选项设置为默认值.

我在.m文件中有一行,例如:

static NSArray * const kSchemaVersions = @[@"1"];
Run Code Online (Sandbox Code Playgroud)

并且,正如预期的那样,我看到编译器错误说 Initializer element is not a compile-time constant.

但是,如果我将同一行放在.mm(Objective C++)文件中,编译器不会抱怨.

我完全明白为什么它不起作用,但我很困惑为什么它似乎.

思考?

objective-c objective-c++

4
推荐指数
1
解决办法
629
查看次数

混合Objective-C和C++时,未知类型名称'class'

这真让我抓狂.

我在foo.h文件中有一个C++类声明.

class foo // error marks are here
{
};
Run Code Online (Sandbox Code Playgroud)

当我#include/#import在我的fooUser.mm文件中的这个标题时,它编译.当我#include/#import在我的fooUser.h文件中执行它时,它没有,并且编译器错误是.

Unknown type name 'class'; did you mean 'Class'?
Excpected ';' after top level declarator.
Run Code Online (Sandbox Code Playgroud)

我正在使用XCode 4.2,LLVM编译器3.0,......这应该是重要的.

objective-c objective-c++

4
推荐指数
1
解决办法
6766
查看次数

AVCaptureSession旋转| 视频传输时的方向

我正在开发视频流应用,其中我需要捕获前置摄像头视频帧并编码然后转移到另一端,典型的流程是这样的

AVCaptureSession - > AVCaptureDeviceInput - > AVCaptureVideoDataOutput - >捕获帧 - >编码帧 - >发送帧到另一端,

它工作正常,我已将kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange设置为帧格式.

还有用于显示预览的预览图层,

当设备方向发生变化时,问题就出现了,如果设备从纵向移动到横向,那么在另一端框架旋转90度,我期待自从预览层支持方向,所以我将在Capture回调中自动接收旋转缓冲区,但看起来,预览层只显示捕获的缓冲区的预览和UI orating缓冲区,而在另一端我会得到咆哮的缓冲区,

所以我想知道,有没有任何配置可以让它改变,或者我需要在Capture缓冲区回调中旋转/转换缓冲区.

video objective-c++ ios avcapturesession avcapturedevice

4
推荐指数
1
解决办法
6458
查看次数

使用来自ObjectiveC的回调调用C ++方法

我需要调用C ++方法并将回调方法作为参数传递...从ObjectiveC方法中...然后在ObjectiveC中会多次触发此回调方法...因为它是回调方法...所以我需要捕获该ObjectiveC回调方法,因为它将作为Swift代码的闭包被调用...

这是C ++方法签名

static bool cPlusPlusMethodWithCallBack(const std::string& someText, void (*someCallback)(unsigned int) = NULL, unsigned int someNum = 0);
Run Code Online (Sandbox Code Playgroud)

我的问题是,在ObjectiveC中(在.mm和.h中)声明的此回调方法的Block语法应该是什么,然后可以将其作为参数传递给C ++中的someCallback

我是一名Swift开发人员,因此对ObjectiveC有点困惑...非常感谢

c++ objective-c objective-c++ objective-c-blocks swift

4
推荐指数
1
解决办法
909
查看次数