在iOS CocoaPod中使用C++

4
我正在为iOS构建一个私有的Cocoapod,但在处理一些C++代码时遇到了问题。该项目在XCode中构建良好,但当我尝试运行pod lib lint MyProjectName.podspec时,会出现以下错误:

- ERROR | xcodebuild: /path/to/aheader.h:2:10: error: 'string' file not found

该头文件的第一行如下:
#include <string>

在寻找可能的解决方案时,我根据CocoaPods:链接与libPods.a中定义的C++符号的建议,将以下内容添加到podspec文件中。

s.source_files = "MyProjectName/**/*.{swift,c,m,h,mm,cpp,plist}"
s.library = 'c++'
s.xcconfig = {
   'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11',
   'CLANG_CXX_LIBRARY' => 'libc++'
}

但这对错误没有影响。我看到另一个建议是“使用包装器”,但这段代码(这是第三方IP,我无法将其移植到Objective C)已经在使用包装器。
如何通过混合使用Objective C和C++以及Swift来成功构建pod?任何(非空)指针都将不胜感激。
2个回答

2

我只需要将C++的头文件扩展名简单地重命名为.hpp,这样它就不会默认包含在source_files过滤器中。这解决了问题,因为包装器正在包含这个头文件。如果有人遇到同样的问题,希望这篇文章对他们有所帮助。

更新:不行,这只是让应用程序能够构建,但使用pod仍然不起作用。


0
尝试在链接器选项中显式添加stdc ++。
  s.pod_target_xcconfig = {
    'OTHER_LDFLAGS' => '-l"stdc++"'
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接