C# 与 C/C++ 互操作

news/2025/10/4 19:18:49/文章来源:https://www.cnblogs.com/mLazy/p/19125840

本文介绍 C# 与 C/C++ 互操作的方法,尤重点介绍 P/Invoke。

为什么要互操作?

主要有两个原因:

  • 用 C/C++ 编写算法核心代码,提高程序性能。
  • 有一些库 / API 需要通过 C/C++ 调用。

两种方法

主要有两种方法:C++/CLI 和 P/Invoke

C++/CLI

C++/CLI 相当于微软发明的一种新语言,在 C++ 中加入了托管要素。好处是 C# 可以直接调用,不用写 P/Invoke 胶水代码。

坏处呢?这个新的语言很复杂,既需要开发者熟悉 C++ 还要熟悉 C#,还有多出来的奇妙语法。

笔者不是很推荐使用。

P/Invoke

P/Invoke(Platform Invoke,平台调用)严格来讲可以用来调用一切外部库(如 .dll.lib)。但我们重点关注调用 C/C++。大概过程是:

  • 用正常的 C/C++ 来编写代码。但注意写 C++ 时要按 C 导出,即 extern "C"。否则符号名会被修改,不好操作。
  • 把 C/C++ 代码编译成 .dll
  • 在 C# 中写一个 “桥接” 类,用 DllImport 来导入 .dll 中的符号。(其实好像可以使用自动生成器来完成这一点)

笔者比较推荐 P/Invoke。

P/Invoke

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用指南:gitlab-runner 再次实践中理解和学习

实用指南:gitlab-runner 再次实践中理解和学习pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

企业网站禁忌南京平面设计师联盟

一、实验目的: 1、掌握SQL SERVER的身份验证方式。 2、掌握SQL SERVER的权限。 3、掌握给数据库的用户和角色赋予权限和从用户和角色收回权限。 4、掌握GRANT,REVOKE,DENY的用法。 二、实验内容: 1、将SQL SERVER服务器的安全…

2025年7月28日当周关键漏洞汇总分析

美国网络安全和基础设施安全局(CISA)发布了2025年7月28日当周的漏洞公告,包含148个高危漏洞、157个中危漏洞和32个低危漏洞,涉及多个主流软件和系统,包括代码编辑器、代理服务器、内容管理系统等。漏洞摘要 - 2025年…

完整教程:Ref 和 Reactive 响应式原理剖析与代码实现

完整教程:Ref 和 Reactive 响应式原理剖析与代码实现pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

电子商务型网站建设免费自建网站

Java Web项目的层次结构及常见分包 Web项目中的层次 ControllerServiceDaoController层:表现层(视图)层。用来显示数据和接收用户数据Service层:业务逻辑层,用来处理页面。先写接口,后写实现类Dao层&#…

如何网上快速接网站开发订单手机网站进不去怎么办

场景介绍 小明接到学校老师安排的任务,需要批量将班级里同学们拍的普通照片转换为素描图,供课堂游戏使用,于是求助到程序员老爸,机智的程序员老爸分分钟用几行Python代码解决:在阿里云Serverless函数计算服务中部署普…

临安市住房和建设局网站深圳市网站推广公司

一. 背景 距离上一篇JS文章已经20天,经重新总结发现,上一篇概况的有点浅显,适合初学js的入门了解,但对于已经学习js一段时间的人,或者是想系统的了解JS体系,接下来的文章可能会更有帮助。 该系列博客的书写…

荣县住房和城乡建设厅网站wordpress收费缓存插件

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. PC 配置 IP 地址2. PC3 属于 Vlan10,PC4 属于 Vlan20,配置单臂路由实现 Vlan10 和 Vlan20 三层互通3. 测试在 PC3 上 Ping PC4 ,可以 Ping 通 PC4 摘要: 本文…

【自然语言处理】文本规范化知识点梳理与习题总结 - 教程

【自然语言处理】文本规范化知识点梳理与习题总结 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

公司做网站能抵扣进项税吗西安便宜做网站

思路:无论vue还是react打包都会有dist文件夹,内部有index.html。我是想根据index.html中的script src地址是否改变,判断项目是否有新内容。 具体代码如下 首先先拿到生产环境中index.html文本,由于是单页面应用使用fetch(/?_st…

西安企业网站制作公司wordpress 前端优化

接上一篇:企业实战_04_MyCat常用配置文件详解 https://gblfy.blog.csdn.net/article/details/100112080 文章目录1. 加密简述2. 加密目录3. 执行加密4. 添加加密属性5. 添加密文6. 测试是否可用声明:需要提前安装mysql Linux centos7 安装 MySQL5.7.x 1. 加密简述 …

网站云空间大小flatsome wordpress

MySQL 删除操作和连接类型详细讲解和案例示范 DDL(Data Definition Language,数据定义语言)是用于创建和修改数据库结构的语句,包括创建表、索引、视图,以及修改这些结构。本文将详细介绍MySQL DDL语句的常见用法&…

邮票收集问题正推证明

参考文献。 (题目:有一个 \(n\) 面的骰子,扔到各面的概率相等。求期望扔几次可以使每一面都被扔到。) 设 \(f_i\) 表示已经扔到过 \(i\) 个不同的面时,期望的扔的次数。 称事件 \(A\) 为扔到了已经扔过的面,事件…

深入解析:Playwright MCP浏览器自动化详解指南

深入解析:Playwright MCP浏览器自动化详解指南2025-10-04 18:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display:…

分布式加载网站的静态seo搜索引擎优化内容

外卖系统源码解读:校园外卖APP开发全攻略 今天,小编将深入解读外卖系统的源码,详细介绍如何开发一款功能齐全的校园外卖APP,帮助开发者快速上手,打造出高质量的外卖应用。 一、需求分析 应具备以下基本功能&#xff…

大作设计网站好玩的网页传奇游戏

标题:Redis缓存一致性难题:如何让数据库和缓存不“打架”?(附程序员脱发指南) 导言:当数据库和缓存成了“异地恋” 想象一下:你刚在美团下单了一份麻辣小龙虾,付款后刷新页面&#…

2025多校冲刺CSP模拟赛2 2025.10.4 模拟炸

rt:炸了 T1 查询 题面 赛时 疯狂排序!!疯狂贪心!!疯狂分讨!!疯狂星期四六!!(大雾) 无果。死了。 打了暴力32pts遗憾离场 正解 二分答案!闪亮登场! 考虑比较元素为\(a_i+b_i*c_j\)形如一次函数\(y=kx+b\), …

算法乱谈

1.图与树最短路所谓最短路,在图上确定序列长度为 \(n\) 的序列 \(A\) 为 \({P_1,P_2,...P_n}\),其中总有 \(P_i \rightarrow P_{i+1} \in E\),并且最小化 \(\sum_{i=1}^n W_{(P_i,P_{i+1})}\) 。 算法 1.dijkstra 其…

2025 年 9 月习题集

2025年9月习题集P5933 [清华集训 2012] 串珠子。简单的图计数。 P8329 [ZJOI2022] 树。DP。 P6646 [CCO 2020] Shopping Plans。堆,最优化。 P7470 [NOI Online 2021 提高组] 岛屿探险。分治,01-Trie。 P4809 [CCC 2…