Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Получить строку из string метода C++

Всем привет, сразу говорю, в плюсах очень плохо разбираюсь. В общем есть string метод на C++ (DLL), нужно вызвать его на C# и получить строку.
С++:

#include <string>
using namespace std;

extern "C" string GetString()
{
    return "Test";
}

C#:

[DllImport(@"C:\Users\Admin\Desktop\TestDLL.dll")]
public static extern string GetString();
...
MessageBox.Show(GetString());

Выдаёт "System.EntryPointNotFoundException". Подскажите, пожалуйста, как можно реализовать такое.

UPD: Тупанул, не дописал код

C++:

#include <string>
using namespace std;

extern "C" _declspec(dllexport) string GetString()
{
    return "Test";
}

Молча крашит с ошибкой "завершилась с кодом -1073740940 (0xc0000374)". Скорее всего потому что string нельзя передать, подскажите как тогда можно сделать.

В общем решил проблему, пользуйтесь.

C++: 

#include <iostream>
#include <string>
#include <comdef.h>
using namespace std;

extern "C" _declspec(dllexport) BSTR GetString() { return SysAllocString(L"Test"); }

C#:

[DllImport(@"C:\Users\Admin\Desktop\TestDLL.dll")]
[return: MarshalAs(UnmanagedType.BStr)]
public static extern string GetString();
...
MessageBox.Show(GetString());