托管和非托管 C++/MFC 可以混合在一个 dll 中吗?

2024-03-08

以前,我们有 MFC (VC6)、VB6 和 C# 应用程序中的软件,需要调用用 C++(和 MFC)编写的相同引擎。该引擎需要 C++ 来提高速度。当时我们决定使用 COM 作为接口,因为所有三个都可以使用它,并且在编组等方面的问题最少。

我们的 MFC 应用程序现已弃用,并且我们最近决定放弃 VB6,因此我们剩下的就是 C#。

我们可以让 COM 引擎保持原样,但最好摆脱 COM 注册等,并拥有一个可以使用的托管接口。如果用户的机器出现问题,COM 注册有时会导致支持问题。

是否可以拥有一个带有现有非托管 C++/MFC 的 dll 和一个 .NET 前端接口?


您可以拥有一个在内部使用 MFC 类的 C++/CLI DLL。使用 C++/CLI 创建混合模式 DLL 的一个很好的优点是,您可以在 DLL 中的任何位置使用本机 C++(遵循 C++/CLI 规则)并且“它可以正常工作”。

然而,这里的目标应该是提供可以从 C# 应用程序调用的漂亮、干净、托管的包装器。

话虽这么说,您很可能希望避免对任何用户界面元素使用 MFC。虽然可以用 C# 托管 MFC 内容,反之亦然,但这通常会出现问题 - 最好使用 C++/CLI 将 C++ 引擎(时间关键操作)和遗留代码封装在漂亮、干净的托管包装器中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

托管和非托管 C++/MFC 可以混合在一个 dll 中吗? 的相关文章

  • 拆箱未知类型

    当类型本身未知时 我试图找出支持将整数类型 short int long 拆箱为其内在类型的语法 这是一个完全人为设计的示例 演示了这个概念 Just a simple container that returns values as ob
  • 使用 linq 2 实体检查 where 子句的两个条件

    嗨 我有一个名为 产品 的表 其中包含列 product id prodcut name prodcut price values like 1200 2000 3000 100 prodcut desc category id 1 2 3
  • 使用 DbContext 进行模型优先,无法初始化新数据库

    我放弃 我找到了这个 http blogs msdn com b adonet archive 2011 03 15 ef 4 1 model amp database first walkthrough aspx http blogs m
  • .Net 中可用的并行技术

    我是 Net 平台的新手 我查了一下 发现 Net中有几种做并行计算的方法 任务并行库中的并行任务 即 Net 3 5 PLINQ Net 4 0 异步编程 Net 2 0 异步主要用于执行 I O 繁重的任务 F 有简洁的语法支持这一点
  • 支持 ARM 上的 Windows 10 桌面应用程序 - MFC 和 COM 以及 OPOS 可以工作吗?

    我试图了解将在 x86 Windows 10 上运行的 C MFC 应用程序移植到具有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍 32位应用程序具有以下特点 MFC 与 C 用于用户界面 C
  • 如何正确复制/克隆结构?我应该使用一个类吗?

    假设我有那个 Structure myStruct Public myPoint As Point Public myBool As Boolean End Structure 如何复制 克隆该结构 我现在解决了这个问题 我使用的代码示例
  • 从 C# 检测 powerpoint 形状上的事件

    是否有可能检测在 Powerpoint 形状 例如箭头 上发生的事件 到目前为止 我发现唯一的可能性是 selectitemchanged beforerightclick 和 beforedoubleclick 但无法找到检测其他内容的方
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • 即使在 GC Collect 和 WaitForPendingFinalizers 之后,窗口对象在关闭后也未释放?

    这是一个简单的测试应用程序 可帮助了解 WPF 内存使用情况 我想了解的关键是为什么MainWindow即使在关闭并等待 GC 完成之后 仍然被引用并且它的内存没有被释放 参见下面的代码清单 文本 MainWindow Finalizer
  • C# .Net Serial DataReceived 事件响应对于高速数据来说太慢

    我已经设置了一个 SerialDataReceivedEventHandler 并在 VS2008 Express 中使用基于表单的程序 我的串口设置如下 115200 8N1 Dtr 和 Rts 已启用 接收字节阈值 1 我有一个通过蓝牙
  • 字典 API(词汇)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道一个好的 NET 字典 API 吗 我对含义不感兴趣 而是我需要能够以多种不同的方式查询单词 返
  • 并行应用程序的可变与不可变[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我正在编写的应用程序中 我需要编写大量基本类型 这些类型很可能是不可变的 但我想知道并行应用程序中可变类型与不可变类型的比较如何 您可以对可变
  • IL 的仿制药?

    是否可以在 IL 生成器中使用泛型 DynamicMethod method new DynamicMethod GetStuff typeof int new Type typeof object ILGenerator il metho
  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • DotNET 应用程序中的 GDI 句柄

    我的纯 DotNET 库作为非托管桌面应用程序中的插件运行 我收到了稳定的 虽然低 崩溃报告流 这些报告似乎表明 GDI 句柄存在问题 错误消息中的字体等 恢复为系统字体 各种控件的显示崩溃 不久后发生大规模崩溃 我的窗体几乎没有控件 但我
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所

随机推荐

  • 有没有办法反序列化 Elasticsearch Nest 搜索查询?

    使用 Nest 构建 Elasticsearch 查询后 我希望能够查看发送到 Elasticsearch 的 JSON 版本 这可能吗 我想是某种解串器 这是我的后续问题的信息 infer defaultIndex myindex ack
  • 为什么 Android 对 ConstraintLayout 使用单独的 xmlns

    我对 Android 中的 ConstraintLayout 有点困惑 我正在学习它 首先我感到困惑的是为什么 android 使用单独的 xml 命名空间呢 xmlns app http schemas android com apk r
  • 使用 IIS 和 ACL 的 WCF 授权

    我正在尝试保护一些 WCF 服务 如果可能的话 我想使用 IIS 或 Web config 来完成所有繁重的工作 配置 我不想在我的代码中嵌入任何东西 我想我知道这可能不可行 如果可能的话 我想实现这一点而不必求助于 AspCompatib
  • 不透明度低于 childs 的容器

    我想制作我的网页background color with opacity 0 5但网页内的内容会有一个opacity 1 作为默认值 问题是如果我设置opacity 0 5对于容器 该容器内的所有子级都相同opacity value 我搜
  • 关于如何使用R和ggplot2绘制背对背图的问题

    我的目标是绘制一个金字塔图 如所附的那样 我找到了几个使用 ggplot 的示例 但我仍然在努力将我的示例应用于我的数据 或我想要绘制的数据 structure list serial c 40051004 16160610 1609031
  • Centos 无法安装 mysqli

    我无法安装Mysqli 我正在使用 Centos 6 apache 2 2 x 和 php 5 4 MySql 5 5 37 cll I tried yum install php pdo php mysqli 我看到 Loaded plu
  • 使用批处理文件发送电子邮件

    我的 Outlook 配置了我的办公室 ID 并且对批处理脚本非常陌生 通过批处理文件向我的同事发送电子邮件的最简单的方法 最简单的代码 是什么 thanks 我可以为你看到 3 个选项 最重要的是 批处理没有内置方法 但有可以从批处理文件
  • 检查优惠券是否应用于 WooCommerce 中的购物车

    我需要找到一种方法来检查优惠券是否适用于 WooCommerce 结帐 如果是这样 我想做点什么 我尝试四处寻找这个问题 但找不到解决方案 这是我正在尝试的精简版本 add action woocommerce before cart ta
  • 自定义 Clipper 贝塞尔曲线 Flutter

    我目前无法绘制贝塞尔曲线 The output I have right now is The output that I need is 我应该在此处添加什么作为贝塞尔值来获得曲线 自定义剪辑器的代码片段是 class OnBoardin
  • 链接到电子邮件附件

    您好 我正在发送电子邮件附件 使用 php 并想向我向其发送电子邮件的人指出有附件 我想通过在电子邮件的 html 正文中显示一个链接来实现此目的 因此他们所需要做的就是单击该链接 系统将尝试打开 查看附件 有谁知道这是否可能 如果是这样
  • 如何在 Tkinter 中通过一个“绑定”绑定多个小部件?

    我想知道如何用一个 绑定 绑定多个小部件 例如 我有三个按钮 我想在悬停后更改它们的颜色 from Tkinter import def SetColor event event widget config bg red return de
  • 检索客户端的 PC 名称? (Windows 身份验证)

    我有一个在内部网络上运行的 ASP net 应用程序 实际上它在 Sharepoint 2007 上运行 我只是好奇 我可以以某种方式检索客户端正在使用的 PC 的名称吗 如果有帮助的话 我可以访问 Active Directory 问题是
  • Safari 上的 CSS 翻译问题

    我正在努力将我制作的 Gif 转换为 CSS 动画 在 Chrome Firefox Opera 上一切正常 但在 Safari 上却出现问题 当我最初加载页面时 图像会忽略翻译并位于下方 但是一旦我单击 Safari 选项卡并返回 页面就
  • 将列列表作为向量传递给 data.table 的 CJ

    我有以下代码 main cols lt c num let dt lt data table num 1 5 let letters 1 5 dt new dt lt dt CJ num num let let unique TRUE on
  • 如何防止 XNA 组件在离屏时绘制?

    我正在 XNA 中制作 2d 游戏 使用可绘制游戏组件时 哪一个性能更好 1 当组件不在屏幕上时 将其从组件列表中删除 当组件在屏幕上时 将其添加 2 当其离屏时 不运行其绘制函数 通过使用 awake 布尔字段和 if 语句围绕绘图函数中
  • 测量服务器请求后 JSF 视图的呈现时间

    我想测量 JSF 应用程序的渲染时间 由于我的权力原因 应用程序无法填充日志 因此 我的问题是 有什么方法可以在使用任何浏览器执行包括后端 服务器 调用的特定操作后测量应用程序的渲染时间 到目前为止 在使用 Chrome 开发者工具后 我发
  • 如何从QVariant获取原始python数据

    这几天正在学习python和Qt 所以请考虑这将是一个新手问题 但我被困在这里 import sys from PyQt4 QtCore import data1 string data2 QVariant data1 data3 data
  • DirectUI 的真相是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Windows 桌面应用程序 它需要一个很棒的 UI 我现在使用Visual Studio和MFC 后来听说DirectU
  • 如何获取 MySQL 数据库的最后访问(和/或写入)时间?

    如何查明 MySQL 数据库上次读取或写入的时间 您甚至可以对每张桌子进行检查吗 SELECT UPDATE TIME FROM INFORMATION SCHEMA TABLES WHERE TABLE SCHEMA dbname AND
  • 托管和非托管 C++/MFC 可以混合在一个 dll 中吗?

    以前 我们有 MFC VC6 VB6 和 C 应用程序中的软件 需要调用用 C 和 MFC 编写的相同引擎 该引擎需要 C 来提高速度 当时我们决定使用 COM 作为接口 因为所有三个都可以使用它 并且在编组等方面的问题最少 我们的 MFC