OGeek|极客世界-中国程序员成长平台

标题: c++ - 如何在 Objective-C 项目中合并 C++ 代码? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 16:22
标题: c++ - 如何在 Objective-C 项目中合并 C++ 代码?

我想在 Xcode 项目中使用一些 C++ 代码,但我对这两种语言的理解都不够好,还不知道如何进行。我已经在 Obj-C 工作了一段时间,并且在应用商店有一个应用,但仍在学习......

我要使用的代码有两个同名文件和 .h.c 扩展名。我认为它们对应于 Obj-C 中的 .h.m 文件,但它们缺少 @interface@implementation 我熟悉的结构。还有一个我不知道该怎么处理的 main.c 。看起来它是主程序 - 我应该尝试将其代码提取到我的主 viewController 中吗?

也许是一个好的教程的链接?可能这个问题太模糊了……

仅供引用 - 我要使用的代码用于计算日出和日落时间,位于:http://www.risacher.org/sunwait/

谢谢!

编辑:

感谢您的建议 - 在我得到这个之前,我可能需要做更多的学习。但我取得了一些进展......

main.c 中(有一个名为那个的文件似乎很奇怪......)有一个这样的函数(?):

int mainFunction(int argc, char *argv[])
{
// a bunch of function-y stuff
}

它被称为 main 但我将其更改为 mainFunction 以消除错误。现在它编译了,我可以调用它,但是编译器会警告我:warning:implicit declaration of function 'mainFunction',它在我调用它后崩溃。



Best Answer-推荐答案


Now it compiles and I can call it but the compiler warns me thus: warning: implicit declaration of function 'mainFunction' and it crashes after I call it.

这是因为,在您使用此函数的地方,您没有前向声明或包含该函数的声明。在您的 Objective-C 代码中,您应该添加以下代码:

int mainFunction(int argc, char *argv[]);

另请注意,“.c”文件扩展名是 C 代码,而不是 C++。由于 Objective-C 是 C 的超集,您可以轻松地将扩展名更改为“.m”,但您仍然会遇到相同的错误,因为您需要此前向声明。我强烈建议您在进入 Objective-C 世界之前先熟悉 C 和 C++ 代码。如果您不想学习 C++,那么至少,您应该在学习 Objective-C 之前加强您的 C 知识,因为 C 基础知识适用。

关于c++ - 如何在 Objective-C 项目中合并 C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320940/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://sqlite.in/) Powered by Discuz! X3.4