15得票3回答
在C#中创建非托管的C++对象

我有一个未托管的dll,其中有一个类"MyClass"。现在是否有一种方法可以在C#代码中创建这个类的实例?调用它的构造函数?我尝试了,但是Visual Studio报告了一个错误,错误信息为该内存区域已损坏或类似。 提前致谢

15得票1回答
管理型 vs 非管理型类型

我正在阅读一篇文章,讲解如何在C#中使用sizeof运算符。 他们说:“用于获取非托管类型的字节大小。” 我知道托管代码和非托管代码之间的区别。但是我的理解是,我在C#中编写的所有代码(包括所有预定义和用户定义的类型)都由CLR管理。那么,他们所说的“非托管类型”是什么意思?

14得票4回答
在Mono上动态加载库的P/Invoke

我正在编写一个跨平台的.NET库,其中包含一些非托管代码。在我的类的静态构造函数中,检测平台并从嵌入资源中提取适当的非托管库并保存到临时目录,类似于另一个stackoverflow答案中给出的代码。 为了在未在PATH中找到库的情况下仍然可以找到它,我将其保存到临时文件后明确加载它。在Win...

14得票3回答
C#: 将字符串转换为 Sbyte*

我使用了一个托管的C++包装器来编写我的C#代码。要创建此包装器类型的新对象,我需要将String转换为Sbyte*。一些StackOverflow.com帖子讨论了如何将String转换为byte[]以及byte[]转换为sbyte[],但没有涉及String到sbyte*的转换。 msd...

14得票1回答
为什么无法将未管理的结构体作为托管类的成员?

我知道在C++/CLI中,当定义一个托管类时不能使用非托管类型:public struct Unmanaged { int x; int y; }; public ref class Managed { int one; Unmanaged two; //e...

14得票5回答
从.CAB档案或InfoPath XSN文件中提取的最小C#代码,保存在内存中。

最近我一直在尝试实现某些从InfoPath XSN文件(即.CAB归档)中提取文件的功能。经过在互联网上广泛搜索,似乎没有本机.NET API来实现这一功能。所有当前解决方案都集中在大型库上,例如用C++编写的托管库将Cabinet.dll封装起来。 可悲的是,这一切都违反了我们公司的“不使...

14得票3回答
Swift(iOS 8 SDK):将Unmanaged <ABMultiValueRef>转换为ABMultiValueRef

我需要将来自AddressBook框架的此函数返回值进行转换:ABRecordCopyValue(nil, kABPersonPhoneProperty) 转换为类型为ABMultiValueRef的值。 当前将此函数标记为:func ABRecordCopyValue(record: AB...

14得票1回答
一个包含ValueTuple的结构体是如何满足unmanaged约束条件的,但ValueTuple本身却不能满足呢?

考虑以下类型: (int, int) → 托管。 struct MyStruct { public (int,int) Value; } → 非托管! 问题:一个非泛型结构体MyStruct,它有一个托管成员(int,int),被评估为托管类型。 期望行为:包含托管成员的结构应该被视...

13得票3回答
如何使用C#中的XmlSerializer将字节数组序列化为XML?

假设我们有一个结构体,它的数据是通过使用Marshal.PtrToStructure提供的不受托管的字节数组来提供的。 C#结构布局: [StructLayout(LayoutKind.Sequential, Size = 128, CharSet = CharSet.Ansi, Pack...

13得票2回答
取消对非托管 DLL 的调用

我有一个未托管的DLL,其中的一个函数如果输入参数是一个大值,可能需要长时间运行,有时候这是期望的,但并非总是如此。 在C#中,我该如何调用该函数以便在需要时可以中止它? 到目前为止,我尝试将调用放入一个单独的线程中,但是中断和中止似乎都不能停止该进程,该进程会一直占用100%的CPU资源...