Подтвердить что ты не робот

Как добавить вызов кода FORTRAN к проекту в Xcode 4.5?

В моей компании есть куча кода Fortran. Традиционно мы скомпилировали код, который нам нужен, в .dll и назвали это .dll, когда нам нужно было сделать расчет. Сейчас мы пытаемся создать приложение для iPad, что, к сожалению, означает, что мы больше не можем просто вызвать DLL.

Один из моих коллег сумел создать простой проект командной строки, где мы вызываем файл Fortran для записи "Hello, World" в отладчике. Тем не менее, когда я пытаюсь заставить его работать на iPad на основе iPad, я получаю кучу ссылок, говорящих, что символы, которые я использую, не могут быть найдены. Я знаю, что Command Line Tool использует файл .cpp для фактического запуска Fortran, и я видел много потоков, связанных с вызовом .cpp файлов в приложении, но все те, которые я видел, устарели, прямо противоречат друг другу, и их исправления не работают для меня.

Мой вопрос: есть ли более прямой способ вызвать Fortran прямо из файла .m? Если нет, , что мне нужно сделать, чтобы взять рабочий инструмент командной строки и получить его в приложение?

ОБНОВЛЕНИЕ 1: после учебников, опубликованных в комментариях, я смог создать файл .o из моего кода Fortran. Я могу сделать File-Add Files, чтобы добавить его достаточно легко, но теперь, как я его на самом деле называю?

ОБНОВЛЕНИЕ 2: Ладно, детские шаги. Я узнал, что вы можете создать статическую библиотеку (я назову ее "new_library" ) из .o файлов ( "source_file.o" ) с помощью команды Terminal ar crv new_library.a source_file.o (вы можете сделать это для нескольких файлов .o просто добавив source_file2.o source_file3.o для большего количества файлов .o, как вы хотите - ПРИМЕЧАНИЕ: убедитесь, что вы используете cd, чтобы попасть в папку, где находятся файлы .o). Я уверен, что Xcode будет работать с .a файлами, но кажется, что файл .h по-прежнему необходим, чтобы другие файлы в проекте (например, контроллеры представлений) вызывали вызовы в файл .a. Я знаю, что могу создать новый .a файл из самого Xcode (New Project → iOS → Framework и Library → Cocoa Touch Static Library), но когда я это делал в прошлом, я просто пишу нормальные .m и .h файлы, а когда я создаю новую библиотеку, он просто сбрасывает все файлы .m в 1.a. Когда я хочу использовать код в этом .a в другом проекте, я просто импортирую файлы .a и все .h в новый проект, и я могу вызвать методы в файле .a так же, как если бы я импортировал все отдельные файлы .m. Итак, следующий вопрос: мне все еще нужен .h, когда мой .a создается с помощью терминала вместо Xcode? Если это так, , как я могу создать заголовочный файл Fortran? Если нет, , как я могу назвать свой код Fortran в .a?

4b9b3361

Ответ 1

Попробуем подвести итоги:

  • Вам нужен перекрестный компилятор FORTRAN, который может создавать код ARM. GCC, вероятно, хороший выбор. Но вам нужно будет создать его самостоятельно из исходных загрузок.

  • Скомпилируйте свой код FORTRAN и поместите его в статическую библиотеку. Эта задача выполняется вне XCode, возможно, из командной строки.

  • Запишите файлы заголовков C для тех процедур FORTRAN, которые вы хотите вызвать непосредственно из C. Вы можете посмотреть Fortran и C/С++ mixed программирование или Учебное пособие: использование C/С++ и Fortran вместе. На этих страницах объясняется, как сопоставить типы данных C с типами данных FORTRAN и наоборот.

  • Добавьте файлы заголовков C и статическую библиотеку в проект XCode.

  • Импортируйте файлы заголовков C в файлы Objective-C (.m), где это необходимо, и вызовите процедуры FORTRAN, как если бы они были функциями C.

  • Создайте приложение iOS с помощью XCode.