11得票1回答
如何通过引用将一个字符串传递给一个不受管理的 C 库,并修改该字符串?

我对与非托管库的交互世界还很陌生。我有一个非托管的C函数,可以在函数内通过引用修改字符串。我在尝试从C#中传递字符串并让C函数修改它时遇到了问题。 以下是C函数:__declspec(dllexport) void __stdcall Test(char* name) { *name...

11得票3回答
C# DLL中没有使用RGiesecke.DllExport的函数

我正在尝试使用C#制作一个DLL,以便在其他语言中使用。我发现了RGiesecke的DllExport,但它似乎无法正常工作。虽然它可以构建并生成一个dll,但当我在Dependency Walker中打开它时,它没有显示任何函数,并且我的调用代码也找不到它们。 我创建了一个新的“类库”项目...

11得票1回答
使用扩展方法从托管的C++/CLI中调用C#扩展方法

如果我的用词有误请谅解,我对托管的C++/CLI了解很有限。 我有一个使用启用/clr选项的dll的MFC应用程序。这个dll使用了几个C# dll来使用WCF与服务器通信。在大多数情况下,这个方法是有效的。 在其中一个C# dll中,我添加了一个扩展方法到System.Net.IPAdd...

11得票2回答
C#中的“非托管导出”

我一直在尝试在Visual Studio 2010 Pro/C#项目中使用Robert Giesecke的扩展程序“Unmanaged Exports”,但无法使其正常工作 - 当我检查已编译的DLL以查看导出函数时,查看器(http://www.nirsoft.net/utils/dll_e...

11得票2回答
malloc 和 Marshal.AllocHGlobal 之间有什么区别?

我用C#编写了一个模块,导出一些函数供C使用。我需要为一些在C和C#之间传递的结构分配一些内存。 我在C中使用malloc进行分配,在C#中使用Marshal.AllocHGlobal()(分配未托管的内存以传递给C)。 如果我使用Marshal.FreeHGlobal()释放用Marsh...

11得票1回答
C++:在混合使用C++/CLI和C++编译时,出现c3859错误代码。

我按照Hans Passant在C++: Getting the "error C2065: 'pst' : undeclared identifier" while using pstsdk?中建议的方式进行了操作(它奏效了),现在我的代码看起来像这样:p...

11得票9回答
托管C++与非托管/本机C++的性能对比

我正在编写一个高性能应用程序,每毫秒要处理数百个事件。 非托管C++比托管C++更快吗?为什么? 托管C++处理CLR而不是操作系统,CLR负责内存管理,这简化了代码并且可能比由“程序员”编写的非托管C++代码更有效率?还是有其他原因? 当使用托管时,程序员如何避免动态内存分配造成的性能损...

10得票2回答
C#封送非托管指针返回类型

我有一个未被管理的库,其中有一个函数长这样:type* foo(); foo 基本上通过 Marshal.AllocHGlobal 在托管堆上为非托管的 type 分配了一个实例。 我有一个托管版本的 type。虽然它不是可调平的,但我在成员上设置了 MarshalAs 属性,因此我可以使用...

10得票6回答
C#释放由IntPtr引用的内存

我正在使用一些返回指针(IntPtr)到大型图像对象的非托管代码。我使用这些引用,但在完成对图像的操作后,我需要释放由指针所引用的内存。目前,唯一能释放该内存的方法是关闭整个应用程序。我需要能够从我的应用程序中释放该内存。 这里是分配内存的调用。 hbitmap 是返回的指针,需要被释放。[...

10得票2回答
C# -- 从指针创建托管数组

我正在尝试从字节数组创建一个双精度浮点数的托管数组。 我已经解决了目前的问题,但我想进行优化。 这里是一些我想让其工作的代码:private unsafe static double[] _Get_Doubles(byte[] _raw_data) { double[] ret; ...