Передача строки (char *) из функции c в Swift 3.0

Я работаю над отправкой данных в и из программы, написанной на c ++, в пользовательский интерфейс Swift 3. Я пытаюсь сделать это, просто передав длинную строку json простой функции c, которая принимает строку символов в качестве входных и выходных данных.

Вот единственный файл, который я включил в заголовок моста:

#ifndef ModelInterface_h
#define ModelInterface_h

#ifdef __cplusplus
extern "C" {
#endif

const char* ModelInterface(const char *input);

#ifdef __cplusplus
}
#endif#endif /* ModelInterface_h */

Вот как я это называю в Swift 3.0

let input = "Send In"let test = ModelInterface(input)
print("Test \(String(cString: test!)) <-- test")

Вот код в файле cpp:

#include "json.hpp"#include "ModelInterface.h"#include "ShellSitzwohl.h"
// for convenience
using json = nlohmann::json;

const char* ModelInterface(const char *input) {

ShellSitzwohl shell = ShellSitzwohl();
ShellFullOutput output = shell.Stress(10, 10);

// conversion: person -> json
json j = output;
std::stringstream stringstream;
stringstream << j;

const std::string tmp = stringstream.str();
const char* cstr = tmp.c_str(); // I can see that cstr is populated correctly

// return "This works!"; // If I just return this then it gets displayed
// Test This works! <-- test
return cstr; // This runs but not displayed correctly
// Test  <-- test
}

Строка json создается, и если я возвращаю статическую строку «Это работает!» это отображается правильно. Не уверен, что выпускается что-то, что не должно произойти до того, как строка вернется к быстрому.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …