是否有可能拥有一个C静态库API,它在内部使用C++并将其隐藏在库的用户中?
我写了一个便携式C++库,我想静态链接到iPhone应用程序.
我使用Max OS X'静态库'模板创建了一个Xcode项目,并使用(extern"C")复制源代码,以及编写C wapper(处理异常).
我试图在另一个Cocoa iPhone应用程序中使用生成的库(.a文件).
如果我在调用ObjectiveC文件上使用(.mm)扩展并在库中的实现类上使用(.cpp),那么一切都很好.
但是当我尝试将包装器文件更改为(.c)扩展时,我在链接时得到未解析的符号,即使所有包装器函数文件都只是C函数.
因为C++是在库内部使用的,它是否意味着在外部它仍然必须被视为C++程序.无论如何都没有强制执行这种抽象?
编辑:谢谢你的回复,
我一直在使用extern"C",我只是不确定调用项目中需要哪些配置.即.如果调用的预测将需要知道它是否使用C++或可能是无知的并认为它是纯C库.
看起来我不能,我必须在ObjectiveC类上使用(.mm)文件.