问题标签 [unmanaged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1212 浏览

c++ - 如何禁用然后启用 MessageBox 中的重试按钮?

我有以下非托管 C++ 代码:

我想禁用 RETRY 按钮 10 秒(例如),然后启用它。

我怎样才能做到这一点?

0 投票
1 回答
426 浏览

c# - 可以通过使用 AfxFreeLibrary 卸载非托管库来减少托管应用程序的工作集吗?

我有一个托管的 Windows 应用程序,它加载一个托管的 C++ 组件,该组件使用 AfxLoadLibrary 来加载第三方组件(如果存在于客户端计算机上)。一旦检测到,我将使用 AfxFreeLibrary 卸载组件,以尝试降低托管父应用程序的工作集。

对 AfxFreeLibrary 的调用成功(使用 Process Explorer 验证),但没有释放内存。这是由于托管应用程序的性质,还是有办法释放这个进程空间?

我一般不会寻找解决这个问题的替代方法,因为代码已经在生产中,而是我想知道卸载的方法是否值得。

0 投票
6 回答
33329 浏览

.net - 如何从非托管代码调用托管代码?

我想从非托管 C++ 调用我的 .NET 代码。我的进程入口点是基于 .NET 的,所以我不必担心托管 CLR。我知道它可以使用 .NET 对象的 COM 包装器来完成,但我想访问托管类的各个静态方法,所以 COM 不是我最短/最简单的路线。

0 投票
4 回答
5937 浏览

c++ - C++ 中的非托管 DLL

我一直在阅读许多关于 C++ 中非托管 DLL 的教程/文章。然而,就我的一生而言,我似乎无法理解这个概念。我很容易被关于它是否需要头文件、如何导出它、我是否需要 .lib 文件以及你有什么的看似分歧而感到困惑。

所以,让我们假设我只有一个这样的函数:

忽略实际代码,我需要什么才能将这个简单的函数本身变成一个我可以调用的 DLL?我只是将 __dllexport 或其他任何内容添加到第一行还是需要标题?我对这一切感到困惑。

0 投票
10 回答
2089 浏览

unmanaged - 托管/字节代码和非托管/本机代码有什么区别?

有时很难描述一些“我们程序员”可能认为对非程序员和管理类型来说很简单的事情。

所以...

您如何向非程序员描述托管代码(或 Java 字节代码)和非托管/本机代码之间的区别?

0 投票
2 回答
6544 浏览

.net - DLLImport 在哪里查找非托管 DLL?

一个简单的问题:当在 .Net 中声明 DLLImport 属性时,运行时会在哪里解决该 DLL 依赖关系?我是否必须将 DLL 及其所有依赖项转储到bin文件夹中?

0 投票
2 回答
847 浏览

visual-studio - vs2008 发布非托管 dll 的问题

我有一个非托管 dll 集合,它们周围有一个 C# 包装器,我从 C# 项目中调用它们。我添加了一个构建事件行,如下所示:

问题是,当我去发布应用程序时,这些 dll 不包括在内,而且发布比无用更糟糕,因为它创建了一个应用程序,该应用程序在您调用其中一个 dll 之前一直运行。

那么,我如何在发布项目时包含非托管 dll?

0 投票
3 回答
518 浏览

com - 为什么从 .NET BackgroundWorker 线程调用非托管代码会影响 UI?

BackgroundWorker我在 .NET 2.0线程中有一系列长时间运行的操作。当我调用位于引用程序集中的非托管代码时,UI 被冻结,直到调用完成。

为什么是这样?我不应该从BackgroundWorker线程中进行这些调用吗?


是的,它是一个 COM 组件,但我不确定如何判断它是否是 STA,以及它的含义/解决方案是什么。我对该组件进行了多次调用,但只有在长时间运行的情况下,我才注意到 UI 变得无响应。

这些调用从服务器检索数据。

0 投票
1 回答
1077 浏览

.net - 非托管代码使用的 .NET 组件的内存管理

new在非托管世界中工作时,如果我们在堆上分配了内存(例如,在 C++ 中使用关键字),我们必须确保自己清理干净;我们还必须确保我们以后使用它AddRef创建的 COM 组件;也许是这样的:CreateInstanceRelease

显然我们可以使用智能指针和其他类似的东西(在 C++ 中),但除此之外......

AddRef/Release对于从 COM 组件中获取的对象(如上例中的 m_anotherObj),我们是否也必须这样做?

更令人困惑的是,如果这个特定组件实际上是一个 .NET 组件,它通过 COM 接口暴露给非托管代码,会发生什么?垃圾收集器是否知道清理东西,还是必须在非托管世界中手动完成?

0 投票
3 回答
1733 浏览

c# - 从 C#/.NET 中的非托管执行应用程序中检索产品信息

在 C# 中,可以使用反射检索程序集相关信息,如产品名称、版本等:

如果正在执行的程序集是用非托管 C++ 编写的(比如说),我该怎么做?甚至可能吗?假设我有一个 .NET dll,它通过 COM 接口在非托管代码中被调用。

编辑:
为了让事情变得非常清楚,这是我的场景:

  • 我有一个用非托管 C++ 编写的可执行文件
  • 我有一个用 C#/.NET 编写的 dll
  • 可执行文件通过 COM 接口调用 dll
  • 在 .NET dll 中,我希望能够检索调用可执行文件的产品名称和版本等信息。

可能的?