C++ 调用包装静态c++;objc库中的库导致链接器错误
我有一个cpp静态库,并尝试将其封装在一个静态obj-c库中,以便它从外部看起来像一个普通的obj-c库。 我的obj-c库编译得很好,但当我尝试在应用程序中使用此库时,会出现以下链接器错误:C++ 调用包装静态c++;objc库中的库导致链接器错误,c++,objective-c,xcode4,wrapper,linker-errors,C++,Objective C,Xcode4,Wrapper,Linker Errors,我有一个cpp静态库,并尝试将其封装在一个静态obj-c库中,以便它从外部看起来像一个普通的obj-c库。 我的obj-c库编译得很好,但当我尝试在应用程序中使用此库时,会出现以下链接器错误: Apple Mach-O Linker (Id) Error Undefined symbols for architecture i386: "operator new(unsigned long)", referenced from: ... 所有lib在每种需要的体系结构中都可以很好地编译 我
Apple Mach-O Linker (Id) Error
Undefined symbols for architecture i386:
"operator new(unsigned long)", referenced from:
...
所有lib在每种需要的体系结构中都可以很好地编译
我的包装库如下所示:
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]创建对象时,我得到了上面提到的链接器错误。
我在LLVM编译器3.0中使用XCode4
希望任何人能给我一个提示,什么可能是错误的,或者如果我的包装是正确的
编辑:
在应用程序的构建设置中添加-lstdc++作为另一个链接器标志可以解决很多链接器错误,但不是全部。解决的问题是ObjcLib.h和ObjcLib.mm中的cpp命令。剩下的是BaseAPI中的一些方法调用。将对此进行更深入的研究,了解是什么使此方法调用不同于那些可以正确链接的方法调用。我不熟悉您的编译器或项目,但听起来好像没有链接标准库。
-lstdc++
选项可以修复任何问题吗?非常感谢,解决了大部分链接错误,但仍然有一些错误。这些基本上都是使用cpp库的调用,我们将更深入地了解这些调用与其他调用之间的区别。:-)总算解决了我的问题,再次感谢!其余的错误是由于某些部件确实丢失造成的。有人刚刚从库的构建中随机排除了一些文件--反正现在可以正常工作了^^