Вернуть массив строк из функции C++ в ФортранC++

Программы на C++. Форум разработчиков
Anonymous
 Вернуть массив строк из функции C++ в Фортран

Сообщение Anonymous »

Я пытаюсь заполнить массив строк в коде C++. Вот что я пытался сделать:
main.f90:

Код: Выделить всё

program main
implicit none
character(len=100) arr(3)
call get_string_array(arr, 100, 3)
write(*,'(3(a,3x))') arr
end
cpp_func.cpp:

Код: Выделить всё

#include 
#include 

using namespace std;

void ConvertToFortran(char* fstring, size_t fstring_len, const char* cstring)
{
size_t inlen = strlen(cstring);
size_t cpylen = min(inlen, fstring_len);

fill(fstring, fstring + fstring_len, ' ');
copy(cstring, cstring + cpylen, fstring);
}

extern "C"
{
void get_string_array_(char** arr, int len, int n)
{
const char* strings[] = {"duma1", "duma2", "duma3"};
for (int i = 0; i < n; i++)
ConvertToFortran(arr[i], len, strings[i]);
}
}
После компиляции двух файлов как

Код: Выделить всё

ifx -c main.f90
icx -c cpp_func.cpp
ifx main.o cpp_func.o

Я получаю сообщение об ошибке сегментации. Не могли бы вы помочь мне, как правильно распечатать массив arr в main.f90?
*** Редактировать ***
Любое решение, способное передавать массив строк из C++ в Fortran, будет оценено по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/790 ... to-fortran

Вернуться в «C++»