调用c++静态成员函数的Objective-c包装器
objective-c wrapper invoking c++ static member functions
我正试图在纯c++类(.cpp)和纯objective-c对象(.m)之间制作一个objective-c++包装器(.mm)。在github上可以找到一个很好的工作示例。我可以构建和运行它没有问题。
但是我需要访问c++类中的静态成员函数。我修改了github的例子,删除了所有现有的函数,并引入了一个静态成员函数:
// ==================
// DummyModel.h
// ==================
class DummyModel
{
public:
static int test ();
};
// ==================
// DummyModel.cpp
// ==================
#include "DummyModel.h"
static int test ()
{
int x = 1;
return x;
}
// ==================
// DummyModelWrapper.h
// ==================
#import <Foundation/Foundation.h>
@interface DummyModelWrapper : NSObject
- (int) test;
@end
// ==================
// DummyModelWrapper.mm
// ==================
#import "DummyModelWrapper.h"
#import "DummyModel.h"
@implementation DummyModelWrapper
- (int) test
{
int result;
result = DummyModel::test();
return result;
}
@end
这会产生以下错误:
Undefined symbols for architecture i386:
"DummyModel::test()", referenced from:
-[DummyModelWrapper test] in DummyModelWrapper.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
就是这个引用在DummyModelWrapper中进行测试。调用错误的Mm:
result = DummyModel::test();
测试项目改编自github项目,它在未编辑的形式下编译和运行良好(它实例化DummyModel
并调用实例上的成员函数)。当我尝试添加静态成员并从包装器对象访问它时,就会出现错误。
我已经阅读了我可以在stackoverflow和其他地方找到的所有内容,但只能找到涉及非静态成员函数的示例。
引用
http://www.philjordan.eu/article/mixing-objective-c-c + + -and-objective-c + +
http://robnapier.net/blog/wrapping cppfinal -版- 759
http://www.boralapps.com/an-objective-c-project-that-uses-c/294/
Xcode 4.5.2/osx8.2(针对ios5+)
在DummyModel.cpp中,替换
static int test ()
{
...
}
int DummyModel::test ()
{
...
}
相关文章:
- 如何在c++17中制作一个模板包装器/装饰器
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在c++迭代器类型中包装std::chrono
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 用pybind11包装C++抽象类时出错
- 为左值和右值的包装器实现C++范围
- C结构,其指针将被包装在unique_ptr中
- 如何包装第三方DLL在R中使用
- 如何将数组从Objective-C发送到C++函数
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 将 N-arg 函数包装到另一个函数中
- Objective-C C++ 包装器 类型错误的不完整定义
- C++包装Objective-C的方法:如何为变量添加值
- 是否有一系列Objective-C包装器来提升库
- Objective-C - 为C++函数创建一个包装器文件
- 有没有办法用C++类包装一个 Objective-C 对象
- 在Objective c包装器中传递c++对象
- 如何在Objective-C中包装一个巨大的静态c++库
- 命名空间c++库(gloox)的Objective-c包装器
- 调用c++静态成员函数的Objective-c包装器