2012-10-29 78 views
3

使用Xcode,我主要以C++编写了一个Cocoa Touch静态库。它为Objective-C客户端代码的益处公开了一个C接口。我该如何让Xcode链接一个使用C++静态库的iOS项目

我有一个客户端iOS应用程序使用它,并且一切正常,并且按预期运行,除了我发现我需要在客户端项目中包含一个最小的.cpp文件以使链接成功。否则,我会得到与C++相关的未解析符号,例如operator new(unsigned long)

上面的破解很容易和有效,所以我想我没有违反任何法律,但有没有一种适当的方法来消除我的链接器错误?

+0

Xcode版本4.5.1 – JulianSymes

回答

4

应该只是将-lc++添加到项目设置中的链接器标志,我会想。

将其添加到项目设置的“Build Settings”选项卡的“Linking”部分下的“Other Linker Flags”下。

+1

所需的链接器术语似乎是-stdlib = libC++,我甚至可以在项目中使用一个空的C++文件强制执行,但除此之外,我看不到如何设置它。我只用了几个月的Xcode,所以很可能我找不到合适的地方。“其他C标志”似乎对链接选项没有影响(转储到错误日志中),并且构建阶段/链接二进制与库给我太多的C++库可供选择,其中没有一个可能是正确的。 – JulianSymes

+0

看我的编辑。希望有所帮助! – mattjgalloway

+0

我可以按照建议添加-lstdC++作为其他链接器选项,虽然我实际上需要-lC++来选择我正在使用的C++ 11的东西。危险的是,这可能与明确的“C++标准库”选项冲突,在没有.cpp文件的情况下会被忽略,但它确实不应该。所以我认为我的黑客实际上是更安全的,因为拾取的库将是与后者相对应的库,没有冲突的危险。 – JulianSymes

相关问题