Я пытаюсь связать функцию C ++ во время компиляции в программу на Фортране. Я компилирую с mpif90 используя make-файл. Я добавляю объектный файл C ++ в список объектных файлов в последнем. Функция прекрасно компилируется самостоятельно через
g ++ -c -o quenchf.o quenchf.cpp
но когда я добавляю файл .o в файл make для моего программного файла на Fortran, я получаю сообщение об ошибке:
quenchf.o: в функции Optim::Optim(double, double, int, int)':
оператор new [] (без знака long) ‘
quenchf.cpp:(.text+0x1348): undefined reference to
quenchf.cpp :(. text + 0x1359): неопределенная ссылка на operator new[](unsigned long)'
оператор new [] (без знака long) ‘
quenchf.cpp:(.text+0x136d): undefined reference to
quenchf.cpp :(. text + 0x1381): неопределенная ссылка на operator new[](unsigned long)'
оператор new [] (без знака long) ‘
quenchf.cpp:(.text+0x1395): undefined reference to
quenchf.o: quenchf.cpp :(. text + 0x13a9): больше неопределенных ссылок на operator new[](unsigned long)' follow
__gxx_personality_v0′
quenchf.o:(.eh_frame+0x13): undefined reference to
делать: * [ljnpt.exe] Ошибка 1
Нужно ли ссылаться в библиотеке C ++ на Fortran? Я создаю экземпляр объекта C ++ в функции c, поэтому, возможно, это вызывает проблему.
Спасибо за любую помощь
Вы не привязаны к среде выполнения C ++ (которая обеспечивает такие вещи, как operator new[](unsigned long)
). Проблема в том, что вам понадобится среда исполнения C ++ и Fortran, и я не уверен, как этого добиться, но с флагами компоновщика должен быть способ.
Других решений пока нет …