gfortran связывание и компиляция подпрограмм в коде Visual Studio

#json #visual-studio-code #fortran #mingw #gfortran

#json #visual-studio-code #fortran #mingw #гфортран

Вопрос:

Я хотел бы скомпилировать и запустить подпрограммы fortran с использованием кода Visual Studio.

Когда я пытаюсь отладить код, я получаю сообщение об ошибке, в котором указано, что «задача предварительного запуска ‘gfortran’ завершилась с кодом выхода 1«, со следующим консольным сообщением:

 c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup 0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
The terminal process "C:MinGWbingfortran.exe '-g', 'D:......params.f95', '-o', 'D:.......params.exe'" terminated with exit code: 1.
 

Когда я нажимаю «показать ошибки», он говорит, что «пока никаких проблем в worskpace обнаружено не было»

Мои конфигурации файлов json для папки следующие: Launch.json

     {
        "version": "2.0.0",
        "configurations": [
            {
                "name": "Fortran Launch (GDB)",
                "type": "cppdbg",
                "request": "launch",
                "targetArchitecture": "x86",
                "program": "${workspaceRoot}\${fileBasenameNoExtension}.exe",
                "miDebuggerPath": "gdb.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "externalConsole": true,
                "preLaunchTask": "gfortran"
            }
        ]
       }
 

tasks.json

 {
    "version": "2.0.0",
    "command": "gfortran",   

    "args": [
        "-g",
        "${file}",
        "-o",
        "${workspaceRoot}\${fileBasenameNoExtension}.exe"
    ]
   }
 

Я перепробовал многие исправления, найденные в Интернете, такие как изменение настройки по умолчанию для сохранения файла перед запуском, переустановка gfortran и т. Д., Но безрезультатно. Когда я пытаюсь выполнить компиляцию из командной строки, у меня нет никаких ошибок, но когда я использую флаг -g, у меня появляется та же ошибка о «неопределенной ссылке на WinMain @ 16«. Кроме того, у меня нет проблем с использованием настроек для запуска одного кода fortran (без подпрограмм).

У меня архитектура Windows-32, и я использовал MinGW для установки gfortran. Я установил системную переменную среды ‘Path’ для включения этой папки.

Я надеюсь, что проблема ясна, пожалуйста, помогите мне с этим.

Комментарии:

1. Действительно ли ваш код Fortran содержит a program ? Вы не показываете свой код. Вы пишете, что хотите «запускать подпрограммы fortran» , но вы не можете управлять подпрограммами, вам нужна программа. У нас есть другие вопросы и ответы по этому поводу.

2. У меня есть программа a.f95, которая включает в себя две подпрограммы (модули) — params.f95 для объявления параметров и subroutes.f95 для определения подпрограмм

3. Все программы, написанные полностью на Fortran, должны иметь один и только один программный модуль, обычно разделяемый «Program» и «End Program». Это вызывает другие модули в программе в требуемом порядке. У вас есть такой модуль? В противном случае вы, как правило, получаете ошибку, аналогичную той, о которой вы сообщаете, что для меня указывает либо на то, что у вас нет программного модуля, либо он у вас есть, но ваша система сборки его не находит.

4. Да, у меня есть это… моим программным модулем является .f95, и он вызывает параметры и подпрограммы модулей. У меня нет проблем с запуском кода с использованием компилятора FTN95 от SilverFrost. Но я хочу использовать gfortran для включения приложений OpenMP

5. Я могу компилировать и выполнять из командной строки, используя флаги -c и -o. Но у меня такая же ошибка, когда я использую флаг -g для отладки.