У меня есть статическая библиотека cpp, и я попытался обернуть ее в статическую библиотеку obj-c, чтобы она выглядела как обычная библиотека obj-c.Моя библиотека obj-c прекрасно компилируется, но когда я пытаюсь использовать эту библиотеку в приложении, я получаю следующую ошибку компоновщика:
Apple Mach-O Linker (Id) Error
Undefined symbols for architecture i386:
"operator new(unsigned long)", referenced from:
...
Все библиотеки компилируются нормально во всех необходимых архитектурах.
Моя библиотека-обертка выглядит так:
ObjcLib.h
@interface ObjcLib: NSObject{
}
- (void) doSomething:(NSString*)text;
@end
ObjcLib.mm
#import "ObjcLib.h"
#import "apiFromCppLib.h"
@interface ObjcLib (){
@private
cppApiNamespace::BaseApi* api;
}
@end
@implementation ObjcLib
- (void) doSomething:(NSString*)text{
api = new cppApiNamespace::BaseAPI();
}
В моем приложении я добавил ObjcLib.a в разделе Бинарные ссылки с библиотеками,Также правильный путь поиска в библиотеке, но когда я пытаюсь создать объект с помощью [ObjcLib alloc], я получаю вышеупомянутую ошибку компоновщика.Я использую XCode4 с LLVM-компилятором 3.0
Надеюсь, кто-нибудь может дать мне подсказку, что может быть не так, или если моя обертка даже правильная.
РЕДАКТИРОВАТЬ: добавив -lstdc ++ в качестве флага другого компоновщикав настройках сборки приложения решает множество ошибок компоновщика, но не все.Решенными задачами были команды cpp в ObjcLib.h и ObjcLib.mm.Те, кто остаются, являются вызовами некоторых методов из BaseAPI.Рассмотрим подробнее, что отличает вызовы этого метода от тех, которые могут быть связаны правильно.