我的问题有点复杂:
库: 我有一个用 C 和 C++ 编写的库。它使用 Apple LLVM 在 XCode 中完美编译。这个库本身的工作是由 C 代码完成的,而 C++ 部分只是一个 C++ 接口,因为我更喜欢 C++。理论上我只需要使用 C++ 来与它通信。
应用程序: 我在 Objective-C 中有一个使用上述库的应用程序。当然,由于与我的库的通信是通过 C++ 完成的,因此我需要一个 .mm 文件才能从“Objective-C++”调用我的库。
在编译过程中......发生了几种“C”语言的发布:
- 错误:非常量静态数据成员必须被初始化
- 错误:文件范围内不允许语句表达式
- ETC...
它只发生在 Objective-C++
- Objective-C++ (app) -> C++ headers (lib) -> C headers (lib, with extern "C") -> NOT OK!!! 为什么?
如果我制作另一个 C++ 应用程序来测试库,那就没问题了
- C++ (app) -> C++ (lib) -> C header (lib, with extern "C") -> OK
详细信息:我一直在这里使用 Apple LLVM 编译器
问题: 如何从 Objective-C++ 代码从 C++ 编译 C 代码?为什么它与从常规 C++ 代码编译不同?