В принципе, вот моя проблема. Я вызываю чужие функции FORTRAN из моего кода на C++, и это дает мне головные боли. Некоторый код:Функция FORTRAN, возвращающая массив, вызывает segfault (вызов из C++)
function c_error_message()
character(len = 255) :: c_error_message
errmsg(1:9) = 'ERROR MSG'
return
end
Это функция FORTRAN. Мой первый вопрос: есть ли что-нибудь, что может вызвать segfault?
Если нет, то второй: что это значит? Указатель? Я пытаюсь вызвать его со следующим утверждением: C:
char *e = c_error_message_();
Это вызывает Segfault.
c_error_message();
Это также вызывает segfault.
Я объявил c_error_message_() ранее на со следующим кодом:
extern"C" {
char* c_error_message_();
}
бы объявление функции с другим типом возвращаемого значения, чем фактический тип возвращаемого вызвать Segfault?
Я в затруднении. Спасибо за любые ответы.
Работал отлично. Благодаря тонну! –
Можете ли вы рассказать о том, каким был корень (под капотом) причины segfault? –