Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用包装静态c++;objc库中的库导致链接器错误_C++_Objective C_Xcode4_Wrapper_Linker Errors - Fatal编程技术网

C++ 调用包装静态c++;objc库中的库导致链接器错误

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在每种需要的体系结构中都可以很好地编译 我

我有一个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在每种需要的体系结构中都可以很好地编译

我的包装库如下所示:

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库的调用,我们将更深入地了解这些调用与其他调用之间的区别。:-)总算解决了我的问题,再次感谢!其余的错误是由于某些部件确实丢失造成的。有人刚刚从库的构建中随机排除了一些文件--反正现在可以正常工作了^^