Маршалинг структуры указателей широких строк в C# приложение
Формулировка задачи:
Dll:
C#:
Функция выполняется, но MsgBox не выводится. Как исправить?
Код я упросил найдя реальную проблему своего приложения, так что ничего не меняйте и не говорите что можно упростить)))
#include "stdafx.h"
#include "windows.h"
struct MyStruct
{
public:
LPWSTR str1;
LPWSTR str2;
};
extern "C" __declspec(dllexport) void Func(MyStruct* s)
{
WCHAR* value;
value = L"any value";
s->str1 = value;
s->str2 = value;
} [StructLayout(LayoutKind.Sequential)]
struct MyStruct {
[MarshalAs(UnmanagedType.LPWStr)]
public string str1;
[MarshalAs(UnmanagedType.LPWStr)]
public string str2;
}
[DllImport("dll.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void Func(ref MyStruct s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyStruct s = new MyStruct();
Func(ref s);
MessageBox.Show(s.str1 + " : " + s.str2);Решение задачи: «Маршалинг структуры указателей широких строк в C# приложение»
textual
Листинг программы
1 2 3 4 5 6 7 8 9 10 11