Вот как это сделать ясно и идеально : D
1> Измените c ++ функцию на это:
extern "C" __declspec(dllexport) char* __stdcall test_int()
{
std::ifstream file_t("testfile.txt");
std::string Read_test_file((std::istreambuf_iterator<char>(file_t)),
std::istreambuf_iterator<char>());
int size_of_st = Read_test_file.length();
std::string test1 = std::to_string(size_of_st);
char* cstr = new char [size_of_st];
std::strcpy(cstr, Read_test_file.c_str());
return cstr;
}
2> Не забыл добавить #define _CRT_SECURE_NO_WARNINGS
3> Добавить Dllimport в ваше приложение C #
[DllImport("minimal_project_test.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
private static extern IntPtr test_int();
4> И, наконец, использоватьэто везде где нужно вот так:
IntPtr _test_from_Cpp = test_int();
int _test_char_count = <Enter Length of your string>;
byte[] _out_char_value = new byte[_test_char_count];
Marshal.Copy(_test_from_Cpp, _out_char_value, 0, _test_char_count);
string final_string = System.Text.Encoding.UTF8.GetString(_out_char_value);
Бум!оно работает !!!;)