Связывание смешанного FORTRAN и C ++ в среде Visual studio 2008 - PullRequest
0 голосов
/ 02 сентября 2011

Я вызываю функцию C ++ из FORTAN с помощью модуля ISO_C_Binding. Я могу скомпилировать и связать файлы Fortran и C ++, используя параметр командной строки MINGW g ++ и gfortran, используя последовательность команд

gfortran -c main.f90

g++ -c print_hi.cpp

для компиляции и компоновки я могу использовать опцию gfortran, включая стандартные библиотеки C ++ как

gfortran main.o print_hi.o -o main -lstdc++

, которые работают абсолютно нормально. Теперь мои вопросы: как я могу сделать то же самое в среде визуальной студии? В случае простого C мы просто включим файл print_hi.o в дополнительные зависимости в компоновщике, но если я включу только этот файл C ++ (print_hi.o), он выдаст ошибки типа

 Error LNK2010: unresolved external symbol _ZSt4cout referenced in function _print_hi

Так что, я думаю, мне нужно указать путь к библиотекам C ++ в моем проекте FORTRAN, как мы делаем в случае командной строки MINGW, но я не знаю, как это сделать.

PS: Я использую Windows Vista с профессиональным выпуском компилятора Intell Visual Edition 11.1 в Visual Studio 2008 и C ++ в Visual Studio 2010 на одном компьютере.

Ответы [ 3 ]

0 голосов
/ 03 сентября 2011

Перейдите в Свойства проекта -> Компоновщик -> Ввод -> Дополнительные зависимости и введите имена библиотек.

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

Убедитесь, что вы статически строите с помощью библиотеки времени выполнения gfortran. Попробуйте gfortran -static-libgfortran (-c или -S) -f2003 yourfortransource.f90.Вы должны получить объектный файл с расширением .o.

Затем перенести объектный файл в ваш компилятор MS.Скомпилируйте исходный код C / C ++ только в объектный файл.Последний делает нормальную сборку с двумя объектными файлами вместе.Сделайте это с помощью компилятора командной строки, чтобы убедиться, что он работает.

0 голосов
/ 02 сентября 2011

Эти статьи MSDN могут помочь вам: Проблемы со смешанным языком а также Программирование на разных языках с C ++

Только обратите внимание, что все это касается VC ++ 6.0.

...