Маршалинг структуры указателей широких строк в 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д