программирование на фортране и с ++ / с в визуальной студии - PullRequest
0 голосов
/ 10 ноября 2010

Многие люди, возможно, задавали этот вопрос, однако я никогда не видел, чтобы кто-нибудь дал удовлетворительное решение. Хорошо, позвольте мне прояснить мой вопрос: я пытаюсь вызвать некоторые подпрограммы / функции c ++ из моего существующего кода на языке Fortran. Дело в том, что я делаю все в Visual Studio 2008 (компилятор Fortran - это Intel Fortran 11.0). Может ли кто-нибудь дать мне пошаговую инструкцию по компиляции двух языков в одном проекте? если не возможно сделать это в ОДНОМ проекте, что мне делать? Пожалуйста, покажите пример кода, вероятно, всего несколько строк, чтобы продемонстрировать, как действовать.

Заранее спасибо.

Добро пожаловать. Любой, кто хочет поговорить об этом. НО должно быть очень ясно, что я ищу решения для Visual Studio и Intel Fortran (компиляция и отладка с помощью GUI). НЕТ БУЛШИТА о компиляции с gcc / gfortran в linux. Я прочитал тонны таких ответов.

Спасибо

Peng

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Если вам нужны только функции C в C ++, общий подход заключается в использовании extern C в вашем коде C ++.Затем вы можете использовать привязку ISO C на стороне Fortran, а языковой стандарт Fortran требует, чтобы Fortran и C были совместимы.В Фортране вы объявляете интерфейс для описания подпрограммы Си.В руководстве по gfortran есть примеры кода на Fortran / C, применимые ко всем компиляторам, поскольку они являются частью языка.В руководстве Intel есть несколько примеров Fortran / C в разделе Программирование на смешанном языке Intel (R) Fortran / C.В печати см. Книгу Фортрана 95 Меткалфа, Рейда и Коэна.Что касается аспектов, характерных для компиляторов Intel, на форумах Intel есть много вопросов и ответов.

3 голосов
/ 10 ноября 2010

Вы не сможете вызвать C ++ из Фортрана. Fortran не подчиняется концепции класса C ++, не имеет концепции шаблонов, не имеет концепции исключений и не будет правильно поддерживать время жизни объектов C ++.

Вы можете предоставить интерфейс C из своего кода C ++, который может вызвать Fortran. Вы скомпилируете такой код как .dll, а затем загрузите и вызовите функции внутри dll, как в любой другой dll. Однако вам следует обратиться к документации Fortran по поводу того, как вызывать функции внутри DLL.

0 голосов
/ 13 декабря 2011

Компилятор Фортрана не должен иметь значения, поскольку все они имеют формат объекта COFF. Если я правильно понимаю ваш вопрос, вы пытаетесь вызвать c / c ++ из фортрана, но ваш основной графический интерфейс - VS 2008. Поскольку ваш основной графический интерфейс - vs 2008, я также предполагаю, что ваш основной исходный код - c / c ++, и вы хотите вызвать рутина фортрана, которая вызывает рутину ac / c ++. Учитывая это, вам сначала нужно скомпилировать ТОЛЬКО ваши функции c / c ++ в объектный файл, используя VS 2008. Затем скомпилировать вашу подпрограмму fortran в объектный файл, ссылающийся на эти функции c / c ++ (с помощью объектного файла c / c ++), с помощью компилятора Intel Fortran. , Теперь это должно дать вам новый объектный файл, который объединяет функции fortran и c / c ++. Теперь вы можете использовать этот объектный файл обратно с исходным кодом основного тела Visual Studio. Самая важная вещь, которую нужно помнить, - когда вы компилируете в объектный код, убедитесь, что вы статически связываете библиотеки времени выполнения. Переключатель компилятора и синтаксис для вызова внешних языковых подпрограмм вам придется выяснить самостоятельно, так как в интернете ТОНА материала. Вот хороший справочник http://docs.cray.com/books/S-2179-52/html-S-2179-52/ppgzmrwh.html

...