62得票3回答
WinApi - GetLastError与Marshal.GetLastWin32Error的区别

我进行了大量测试。 但我没有发现这两个的任何缺点! 但请看被接受的答案。 我在这里读到,调用托管代码中的GetLastError是不安全的,因为框架可能会在内部“覆盖”上一个错误。我从未遇到过任何明显问题,而且对我来说,.NET Framework足够聪明,不会覆盖它。因此,我有几个关于这个...

51得票5回答
调用PInvoke函数'[...]'时未平衡堆栈

我在使用一些已经用了很长时间的内容时遇到了奇怪的错误。可能是Visual Studio 2010中的新功能,但我不确定。 我试图从C#中调用一个用C++编写的未托管函数。 根据我在互联网上阅读的和错误消息本身的内容,它与我的C#文件中的签名与C++中的签名不同有关,但我确实看不出来。 首先,以...

50得票2回答
非托管内存和托管内存

非托管内存和托管内存到底是什么? 有谁能简要解释一下吗? 此外,当将托管内存概念扩展到RAM时,称为托管RAM。关于“托管RAM”和“非托管RAM”的一些具体细节是什么?

46得票5回答
在C#应用程序中使用C++类DLL

我有一个未受管控的C++ DLL,其中仅导出一个类(不是COM...它只是一个简单的C++类)作为其接口。我想在C#中使用这个类,但被告知它不能仅仅被导入到C#中。 该如何正确地在我的C#应用程序中使用这个类?

45得票4回答
如何在被C#项目调用的非托管C++项目中添加引用?

一个方案(the.sln) 一个C++项目(在2010年是mycppproject.vcxproj,在2008年是mycppproject.vcproj),它编译一个导出一些函数的本地DLL。在调试中,它会构建c:\output\Debug\ mycppproject_d.dll,在发布时,...

43得票7回答
有没有一种工具可以为任意非托管DLL生成P/Invoke签名?

我发现了一个工具,可以为微软自己的非托管DLL生成P/Invoke签名:PInvoke Interop Assistant 是否有类似的工具可以为第三方非托管DLL生成P/Invoke签名? 或者,有没有办法将第三方DLL提供给PInvoke Interop Assistant? 编辑:...

35得票5回答
在.NET中是否可能捕捉访问冲突异常?

我能做些什么来捕获AccessViolationException异常吗? 它是由一个我无法控制的非托管DLL抛出的。

33得票3回答
Marshal.AllocHGlobal和Marshal.AllocCoTaskMem的区别,以及Marshal.SizeOf和sizeof()的区别。

我有以下结构体:[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct WAVEHDR { internal IntPtr lpData; // pointer to locked da...

33得票5回答
C++/CLI在.Net Core中的支持

我们的项目结构如下: native.dll :这包含了用C/C++编写的纯本机代码。此native.dll使用*def文件暴露一些函数。 包装库(wrapper.dll 使用.NET Framework v4.0编译):为了使用native.dll的功能,使用C++\CLI编写了一个包装库...

28得票5回答
“托管到本地转换”在发生时会出现什么情况?(涉及IT技术)

我了解CLR在某些情况下需要进行封送处理,但假设我有:using System.Runtime.InteropServices; using System.Security; [SuppressUnmanagedCodeSecurity] static class Program { ...