当前位置: 首页 > news >正文

C# 与 C/C++ 互操作

本文介绍 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.zskr.cn/news/15832.html

相关文章:

  • 2025多校冲刺CSP模拟赛2 2025.10.4 模拟炸
  • 算法乱谈
  • 信息链路层协议——以太网,ARP协议
  • 实用指南:d-分离:图模型中的条件独立性判定准则
  • [RAG] 基础知识
  • 数据结构 - 字典树 Trie
  • 激活函数实现
  • win10界面如何改成经典菜单?
  • 量子迁移计划启动:应对未来密码学挑战
  • 珂朵莉树 ODT
  • 01.linux基础
  • 详细介绍:Kubernetes实战:MariaDB误删恢复与数据持久化
  • 从模拟入侵到渗透测试:我摸清了黑客的套路,也懂了企业的软肋 - 详解
  • 集合幂级数,FMT 与 FWT 学习笔记
  • 上传文件前端需要注意的三个点:
  • Jenkins安装与配备
  • 适合新手的PPT模板网站,简单操作但效果好!
  • 无人机常用的几种飞行模式
  • springCloudMaven打包配置 - br
  • 题解:P5504 [JSOI2011] 柠檬
  • 太简单了!原来PS在线抠图可以这么玩,背景分离无压力
  • 深入解析:【Leetcode】随笔
  • DateStyle日期时间字符串序列化 - br
  • 十月四日就听《10월 4일》
  • 赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解
  • 4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践
  • 完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”
  • 深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)
  • zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践
  • 11_linux镜像下载