Как вызвать функцию Fortran OPEN из C ++ - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь вызвать функцию Fortran "OPEN" из C ++ (импортирована из libgfortran.a). Функцию «OPEN» непросто вызвать из C ++, поскольку она принимает список именованных аргументов, а не имеет прямой список аргументов. В Фортране эти именованные аргументы можно вызывать в любом порядке, и любой из аргументов может быть исключен.

Пример Fortran:

OPEN(UNIT=11, FILE="my_file.dat", ERR=90)   #and there are many other possible arguments

В C ++:

extern "C"
{
    void open(long* UNIT, <named arguments>);
}

int main(int argc, const char * argv[])
{
    long unit_num = 11;
    char my_file[] = "my_file.dat";
    open(&unit_num, my_file); //not sure how named arguments are specified here either
}

Как указать эти именованные аргументы в C ++? Если это невозможно, есть ли другой способ заставить Fortran открыть файл и дать мне номер устройства или открыть файл с помощью fopen и каким-то образом поделиться им со средой выполнения fortran (получить номер модуля для этого файла).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...