marshalling相关内容

我如何将一个CLI ::阵列从本地code本地阵列?

我写周围写在C ++ \ CLI的托管组件的本机包装。 我在管理code以下功能: 阵列和LT;字节> ^类::函数(); 我想从一个本地C暴露该功能++类具有以下签名: shared_array< unsigned char型>类::函数(); 我已经得到了尽可能调用从本地code中的管理功能,但我不知道如何安全地复制管理的阵列到非托管的。 gcro ..
发布时间:2015-11-26 18:51:19 C#/.NET

结构VS班编组阵列

我想读的本机结构为利用编组C#类型。我的方法元帅结构是像这样: T的readObject< T>(BR BinaryReader在){ VAR字节= br.ReadBytes(Marshal.SizeOf(typeof运算(T))); VAR手柄= GCHandle.Alloc(字节,GCHandleType.Pinned); 尝试 { 返程 ..
发布时间:2015-11-26 18:49:03 C#/.NET

什么是Marshal.GenerateGuidForType(类型)和Type.GUID之间的区别?

键入classType所= typeof运算(SomeClass的); 布尔等于= Marshal.GenerateGuidForType(classType所)== classType.GUID; 我还没有发现这种失败的条件的情况下。 所以为什么以及何时我应该使用的仅仅让元帅方法,而不是在的GUID 属性? 解决方案 看 ... GenerateGuidForType提供相同的功 ..
发布时间:2015-11-26 18:14:03 C#/.NET

我如何编组一个指向指针数组结构?

我有以下签名的C函数: INT my_function(INT N,结构选手**球员) 播放器是一个指向数组的指针,以结构球员的对象。 N 是数组中指针的个数。该函数不修改数组,也不是结构的内容,并返回后,不保留任何指针。 我试过如下: [的DllImport(“mylibary.dll”) 静态外部INT my_function(INT N, [在,的Marsha ..
发布时间:2015-11-26 16:57:51 C#/.NET

大号preFIX在C ++字符串

我有一个静态库。这个库已经定义了下面的函数 INT WriteData(LPTSTR S) 要调用的函数的样品 LPTSTR S =(LPTSTR)L“测试数据”; INT N = WriteData(S); WriteData返回0成功-1失败。 我写一个动态的DLL导出此功能。 INT TestFun(LPTSTR的lpData) { 返回WriteDa ..
发布时间:2015-11-26 10:19:53 C#/.NET

为const char *在C#中?

我尝试调用一个普通的C函数从外部DLL从我的C#-application。此功能被定义为 无效set_param(为const char *数据) 现在我已经使用这个功能的一些问题: 如何指定这个“常量”在C# - code? 公开静态外部无效set_param(为sbyte *数据)似乎错过了“常量”部分 我如何交出平,8位C-串调用这个函数的时候?调用为 set_p ..
发布时间:2015-11-26 10:02:39 C#/.NET

传递C#字符串非托管C ++ DLL

我有一个简单的应用程序加载的非托管的DLL,并传递了一些字符串值,将它从C#。但在C ++ DLL的应用程序,我收到一个异常:试图访问一个读/写保护的内存。我的DLL导入是这样的: [的DllImport(“X.dll”,CallingConvention = CallingConvention.Cdecl) 公共静态外部INT DumpToDBLogFile([的MarshalAs(Unma ..
发布时间:2015-11-26 01:05:03 C#/.NET

运行时可调用包装(RCW)范围 - 进程或应用程序域?

什么是运行时可调用包装(RCW)的范围,引用非托管COM对象时?根据文档: 运行时恰好创建一个RCW 每个COM对象不顾,则 存在的引用数 该对象。 如果我必须“猜测” - 这样的解释应该是指“每个过程中的一个”,但真的是这样吗?任何额外的文件会非常欢迎的。 我的应用程序在其自己的应用领域(这是Outlook中的插件)运行,我想知道,如果我(X)在循环使用Marshal.ReleaseC ..
发布时间:2015-11-26 01:01:15 C#/.NET

如何昂贵的使用MarshalByRefObject的相比,序列化?

在我的Azure Web角色code我从 System.Security.Principal.IIdentity CustomIdentity 类C>。在某些时候,.NET运行库试图序列化类和的序列化是行不通的。试图解决我搜索了很多,发现现在一旦我的 CustomIdentity 类从 MarshalByRefObject的继承存在了是没有序列化的企图和我的code作品。不过,我想知道使用的性能影 ..
发布时间:2015-11-26 00:58:18 C#/.NET

设法本地过渡"通过&QUOT步骤在Visual Studio?

在试图回答这个问题我决定,我需要逐步通过手工编组过程,在调试器视图。 不幸的是,Visual Studio中似乎向右跳过所有这些有趣的code。这里的P / Invoke调用到 GetProfilesDirectory (一WinAPI的函数): 但踏入此调用(F11)后,我不觉得自己在 FFF9BFD8 ;相反,我就在 GetProfilesDirectory $ C $丙地: 另 ..
发布时间:2015-11-26 00:46:53 C#/.NET

在发布版本为什么我不能返回一个char *字符串从C ++到C#?

我试图调用从C#以下琐碎的C函数: SIMPLEDLL_API为const char * ReturnString() { 返回“返回一个静态字符串!”; } 通过后的P / Invoke的声明(有或没有回报的属性,它使没有区别): [的DllImport(“SimpleDll”) [返回:的MarshalAs(UnmanagedType.LPStr) 公共静态外部串Ret ..
发布时间:2015-11-25 23:52:10 C#/.NET

的DllImport与char *

我有一个方法,我想从一个DLL导入和它的签名: BOOL GetDriveLetter(OUT字符*驱动器号) 我试过 [的DllImport(“MYDLL.DLL”) 公共静态的extern BOOL GetDriveLetter(byte []的驱动器号); 和 [的DllImport(“MYDLL.DLL”) 公共静态的extern BOOL Ge ..
发布时间:2015-11-25 15:23:50 C#/.NET

如何编组结构的数组 - (.NET / C#=> C ++)

免责声明:接近零与编组概念。 我有一个包含一个字符串+的结构C.数组,我需要跨越巨大的互操作性鸿沟发送给COM结构体。B - C ++消费 什么是正确的属性集我需要装饰我的结构定义? [标记有​​ComVisible特性(真) [StructLayout(LayoutKind.Sequential) 公共结构一 { 公共字符串STRA 大众B B; } [标记有ComV ..
发布时间:2015-11-25 14:43:24 C#/.NET

正确的方法来马歇尔UCHAR []从本地的dll为byte []在C#

我想马歇尔是我的家乡的dll通过CoTaskMemAlloc来分配到我的C#应用​​程序的一些数据,并想知道如果我做的方式是完全错误的或我缺少的方法C#侧的一些sublte装饰。 目前我有C ++的一面。 的extern“C”__declspec(dllexport)的BOOL __stdcall的COM pressData(无符号字符* pInputData,无符号整型INSIZE,无符号字 ..
发布时间:2015-11-25 14:35:25 C#/.NET

为什么管理字符串做printf的工作?

我们正在通过挖掘一些非常旧的C ++ / CLI的code(旧语法.NET测试版),并都感到有点惊讶地看到这样的内容: 系统::字符串^源(“测试字符串”); 的printf(“%s”时,源); 程序正确输出 测试串 我们想知道,为什么它可以通过托管字符串源的printf - 更重要的是:为什么它的工作原理的?我不希望它是一些方便,功能由编译器,因为下面不工作: 系统:: ..
发布时间:2015-11-25 14:10:54 C#/.NET

是.NET枚举Blittable型? (编组)

显然有Blittable型的列表,所以到目前为止,我没有看到具体上枚举。他们是一般blittable?抑或是取决于它们是否有blittable基本类型中声明? //例。 内部枚举SERVERCALL:UINT { IsHandled = 0, 拒绝= 1, RetryLater = 2, } 参考耗尽: “Blittable和非Blittable型” ..
发布时间:2015-11-25 13:40:46 C#/.NET

应用程序域之间的通信

我们正在建立一个应用程序(的WinForms,.NET 3.5)加载“插件”的DLL到一个次要的AppDomain。次级的AppDomain需要与第一1偶尔通信(更具体地,呼叫或来自为主的AppDomain创建的对象获得的数据)。 我看了大部分材料有关他们之间的AppDomain和沟通。 到目前为止,只有简单的解决方案我已经看到了继承的的 MarshalByRefObject的的并传递一个的的 ..
发布时间:2015-11-25 13:36:14 C#/.NET

我如何元帅为wchar_t *从C ++到C#作为out参数或返回值?

我试图做到这一点的方法很多,但没有一个是工作。有没有人有一个正确的榜样呢?我只是想从一个函数到C#的水平移动 wchar_t的* 值。 解决方案 这是不是你认为它是困难...什么是 wchar_t的* ?什么样的价值确实该类型通常重新present?一个字符串。这是等同于 LPWSTR 在 WINDOWS.H 类型来定义。 所以,你封送它作为一个字符串键入。然而,因为它是一个退出参数(或返回 ..
发布时间:2015-11-25 13:32:22 C#/.NET