我如何将呼叫的呼叫添加到xcode 4.5中的项目中



我的公司有一堆fortran代码。传统上,我们将所需的代码编译到.dll中,并在需要进行计算时称为.dll。我们现在正在尝试创建一个iPad应用程序,这不幸的是,我们不能再调用.dll了。

我的一位同事设法制作了一个简单的命令行工具项目,我们称之为fortran文件,在调试器中写下" hello hello,world"。但是,当我尝试将其用于基于查看的iPad应用程序上时,我会发现一堆链接器错误,说我使用的符号找不到。我知道命令行工具使用一个.cpp文件实际运行fortran,而且我已经看到了许多有关呼叫.cpp文件的线程,但是我看到的所有内容都已过时,彼此直接矛盾,他们的修复程序对我不起作用。

我的问题是,是否有一种更直接从.m文件直接调用fortran的方法?如果不是,我该怎么做才能采用工作命令行工具和将其放入应用程序?

更新1:在评论中发布的教程之后,我能够从我的Fortran代码中创建一个.o文件。我可以执行文件添加文件以易于添加,但是现在我该如何称呼它?

更新2:好的,婴儿步骤。我发现您可以使用终端命令 ar crv new_library.a source_file.o从.o files(" source_file.o")制作一个.a静态库(我将其称为" new_library")(您可以通过添加来为多个.o文件执行此操作source_file2.o source_file3.o对于您想要的尽可能多的.o文件 - 注意:确保使用cd到达.o文件所在的文件夹)。我很确定Xcode可以与.A文件一起使用,但是似乎仍然需要一个.h文件来让项目中的其他文件(如视图控制器)对.A文件中的内容进行呼叫。我知道我可以从Xcode本身(新项目 -> ios->框架& library->可可触摸静态库)中创建一个新的.a文件,但是当我过去这样做时,我只是写正常.m和.h文件,当我构建新库时,它将所有.m文件都捣成1 .a。当我想在另一个项目中使用该代码时,我只是将.A和所有.H文件导入到新项目中,并且可以在.A文件中调用该方法,就像我已经导入所有内容一样单独的.m文件。因此,下一个问题是,使用终端而不是xcode制作.a时我仍然需要一个.h?strong>如果不是,如何在.A?

中调用我的fortran代码

让我们尝试总结一下:

  1. 您需要一个可以产生ARM代码的Fortran交叉编译器。海湾合作委员会可能是一个不错的选择。但是您需要自己从源下载中自己构建它。

  2. 编译您的fortran代码并将其放入静态库中。此任务是在XCode之外执行的,可能是从命令行。

  3. 为您直接从C中调用的那些fortran例程编写C标头文件。这些页面说明了如何将C数据类型映射到Fortran数据类型,反之亦然。

  4. 将C标头文件和静态库添加到Xcode项目。

  5. 在需要的情况下将C标头文件导入您的Objective-C文件(.m),然后调用Fortran例程,就像它们是C函数一样。

  6. 使用Xcode构建iOS应用。

最新更新