unmanaged相关内容

P/Invoke 在 Mono 上动态加载库

我正在编写一个使用一些非托管代码的跨平台 .NET 库.在我的类的静态构造函数中,检测到平台并从嵌入式资源中提取适当的非托管库并保存到临时目录,类似于 另一个stackoverflow答案. 为了使库不在 PATH 中时可以找到,我在将其保存到临时文件后显式加载它.在 Windows 上,这适用于 kernel32.dll 中的 LoadLibrary.我正在尝试在 Linux 上对 dlo ..
发布时间:2022-01-23 14:48:34 C#/.NET

SafeHandle 和 HandleRef

在阅读了这两个方面的内容后,包括本网站上的高票回答,我仍然觉得这有点不清楚. 由于我对这件事的理解可能有误,我会先发布我所知道的概要,以便如果我错了可以纠正,然后再发布我的具体问题: 有时在编写托管代码时,我们必须将地址传递给非托管代码.这就是 IntPtr 的用途.但是,我们尝试确保两件相反的事情: a) 让 GC 中的指针(指向地址)保持活动状态.b) 在不需要时释放它(即使我们忘 ..
发布时间:2022-01-16 10:27:55 C#/.NET

如何让 Visual Studios 构建系统了解托管 dll 的非托管依赖项?

在构建托管代码时,Visual Studio 正确(并且递归地)将引用的托管项目的 dll 复制到正在构建的项目的输出文件夹中. 但是,如果其中一个引用是依赖于非托管 dll 的托管 DLL,则这些非托管 DLL 不会复制到输出文件夹,即使它们在同一解决方案中的相应项目被列为托管 DLL 的依赖项. 我意识到这个问题可以通过让所有项目使用相同的输出文件夹来解决.我们已经为大多数项目这样 ..
发布时间:2022-01-15 23:10:35 其他开发

在哪里放置非托管库的 dll?

我正在尝试为依赖 ghostscript 的库创建 Nuget 包,因此引用 gsdll32.dll - 一个非托管库.我不能只包含一个标准的 dll 引用.我在哪里把它放在 nuget 目录结构中? 解决方案 将 build 文件夹添加到包中,例如,如果包的 id 为 MyPackage,将名为 MyPackage.targets 的 MSBuild 目标文件添加到此文件夹..targe ..
发布时间:2022-01-15 22:59:04 其他开发

C# 组件事件?

我正在尝试编写一个公开事件的 C# 组件.该组件将由非托管 C++ 应用程序导入.根据一些教程,我想出了这段代码(用于 C# 端): 命名空间 COMTest{[ComVisible(真),指导(“02271CDF-BDB9-4cfe-B65B-2FA58FF1F64B"),接口类型(ComInterfaceType.InterfaceIsIDispatch)]公共接口 ITestEvents{ ..
发布时间:2022-01-14 12:38:43 C#/.NET

如何从非托管 COM dll 生成类型库

我必须在我的 .NET 应用程序中使用第三方非托管 COM dll.我需要修改此程序集以生成 自定义 RCW.为了编辑互操作程序集我需要特定程序集的类型库.谁能解释一下如何从非托管 COM dll 生成类型库? regsvr32中没有生成类型库的选项. 谢谢你,最好的祝福,机器人. 解决方案 如果您要做的只是从本机 dll 创建一个互操作程序集(并且本机 DLL 将 TLB 作 ..
发布时间:2022-01-14 11:42:12 C/C++开发

.NET System::String 到存储在 char* 中的 UTF8 字节

我在 .NET 项目中封装了一些非托管 C++ 代码.为此,我需要将 System::String 转换为存储在 char* 中的 UTF8 字节. 我不确定这是否是最好的甚至是正确的方法,如果有人可以查看并提供反馈,我将不胜感激. 谢谢, /大卫 //复制到空白 VisualStudio C++/CLR 命令行解决方案.#include “stdafx.h"#include ..
发布时间:2022-01-12 20:34:14 C#/.NET

带有 COM 接口的 MFC Dll

我对托管/非托管互操作性和 COM 概念非常陌生. 我收到了使用 COM Interop 的建议,以便在 C# 中使用我现有的 MFC 代码.但对我来说问题是,我有一个不是有效 COM 组件的 MFC Dll.如何使这个 MFC DLL 具有可在 .NET 中使用的 COM 可访问接口? 解决方案 从线程 在 C# 中加载 MFC DLLWindows 应用程序 要从 C# 访 ..
发布时间:2022-01-12 14:59:35 C#/.NET

传递来自 C++ 的函数指针以供 C# 调用 - 函数参数包括宽字符字符串 (LPCWSTR)

我正在编写一个供本机 C++ 应用程序使用的 C# 库.我使用 C++/CLI 作为互操作性机制. 我需要将回调函数从 C++ 传递到 C#(使用 C++/CLI 作为中间层).C# 库需要使用以零结尾的宽字符字符串调用 C++ 函数;即回调函数的原型是 Func(LPCWSTR pszString); 还有其他参数,但它们对本次讨论无关紧要. 我在网上搜索并找到了我可以使 ..
发布时间:2022-01-03 08:36:05 C#/.NET

如何实现从非托管 DLL 到 .net 应用程序的回调接口?

在我的下一个项目中,我想为已经存在的 C++ 代码实现一个 GUI.我的计划是将 C++ 部分包装在一个 DLL 中,并在 C# 中实现 GUI.我的问题是我不知道如何实现从非托管 DLL 到托管 C# 代码的回调.我已经在 C# 中进行了一些开发,但是托管和非托管代码之间的接口对我来说是新的.谁能给我一些提示或阅读技巧或一个简单的例子来开始?不幸的是,我找不到任何有用的东西. 解决方案 ..
发布时间:2022-01-03 08:09:38 C#/.NET

检测混合环境中的内存泄漏(托管-非托管)

我有一个用 VC++ MFC 6.0 编写的应用程序.最近通过在 vs2008 中编译升级到 .NET 3.5,并通过使用托管和非托管环境向其中添加了一些 WPF 应用程序.基本上在 win32 窗口上托管 WPF.如果我只是打开一个 WPF 应用程序窗口,内存会以 1KB/10 秒的速度持续增长.我试过使用 .NET Memory Profiler &Ants 内存分析器.但是两者都没有帮助我检 ..
发布时间:2021-12-31 08:02:37 其他开发

调用非托管 DLL 时 vshost32.exe 崩溃

我正在使用 VS 2005 应用程序与非托管 (Fortran) DLL 进行交互.当我直接从命令行运行编译后的可执行文件时,一切正常 - 可以访问 DLL,并且我可以使用 DLL 中的函数. 不幸的是,当我从 VS 2005 启动应用程序时,我收到一个弹出窗口,指出“vshost32.exe 已停止工作"并且没有有用的调试信息. 有没有人遇到过这种行为,或者知道为什么会发生这种情况? ..
发布时间:2021-12-25 16:13:42 其他开发

这个 DLL 是托管的还是非托管的?

我在你面前放着一个 DLL.只使用 Win32 SDK,你能告诉我这个 DLL 是 .NET 程序集吗? 为什么?我们的应用程序以 DLL 的形式加载插件.我们正在尝试扩展这些插件的定义以允许 .NET 程序集,但接口会有所不同,因此加载程序需要在加载之前知道 DLL 是托管的还是非托管的. 解决方案 您可以查看 PE 头信息,了解 DLL 中包含什么类型的信息.这篇文章详细描述了如 ..
发布时间:2021-12-25 16:09:19 C#/.NET

中止对非托管 DLL 的调用

我有一个非托管 DLL,其函数可以在输入参数较大时运行很长时间,有时这是可取的,但并非总是如此. 如何在 c# 中调用此函数以便在需要时中止它? 到目前为止,我已经尝试将调用放在一个单独的线程中,但中断和中止似乎都没有停止该进程,该进程以 100% CPU 运行,直到 dll 完成. 是否可以终止正在运行的 dll 代码? 解决方案 非托管代码只有在处于“警报等待状态"时 ..
发布时间:2021-12-25 16:00:21 C#/.NET

非托管 DLL 无法在 ASP.NET 服务器上加载

这个问题与一个 ASP.NET 网站有关,最初是在 VS 2005 中开发的,现在在 VS 2008 中. 本网站使用两个非 .NET 的非托管外部 DLL,我没有编译它们的源代码,必须按原样使用它们. 该网站在 Visual Studio 中运行良好,可以正确定位和访问这些外部 DLL.但是,当网站发布在网络服务器(运行 IIS6 和 ASP.NET 2.0)而不是开发 PC 上时, ..
发布时间:2021-12-25 15:45:18 C#/.NET

在 C# 应用程序中使用 C++ 类 DLL

我有一个非托管 C++ DLL,它仅导出一个类(不是 COM...它只是一个简单的 C++ 类)作为其接口.我想在 C# 中使用这个类,但被告知它不能仅仅导入到 C# 中. 在我的 C# 应用程序中使用这个类的正确方法是什么? 解决方案 假设 class Foo 的简单方法: 创建一个 C++/CLI 项目,将其命名为 FooWrapper. 使 FooWrapper 依赖于 ..
发布时间:2021-12-25 15:42:39 C#/.NET