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

C#--使用CMake构建C++程序调用示例

1.C++代码

// example.cpp#include <iostream>extern "C" {__declspec(dllexport) void PrintMessage() {std::cout << "Hello from C++!" << std::endl;}
}

2.CMakeLists.txt文件,用于使用CMake构建C++库:

# CMakeLists.txtcmake_minimum_required(VERSION 3.0)project(Example)add_library(example SHARED example.cpp)

3.C#代码--通过PInvoke调用C++函数:

// Program.csusing System;
using System.Runtime.InteropServices;class Program
{[DllImport("example", CallingConvention = CallingConvention.Cdecl)]public static extern void PrintMessage();static void Main(){PrintMessage(); // 调用C++函数}
}

4.小结:

        上述示例中,定义了一个简单的C++函数PrintMessage,然后使用CMake构建了一个名为example的动态链接库。在C#代码中,我们使用DllImport特性声明了PrintMessage函数,并在Main函数中调用这个函数。通过这种方式即实现了在C#中调用C++函数的功能。

同时需要注意非托管函数的参数传递、内存管理等问题

5.(Cmake)补充:

  1. 组织项目结构和文件,告诉编译器哪些文件需要编译,如何相互关联。
  2. 确定编译参数,比如优化级别、目标平台等。
  3. 处理不同操作系统下的构建过程,让你的项目能够在不同的电脑上顺利构建。

即CMake协助管理整个项目的构建过程,更方便地把代码变成可执行的软件。

http://www.lryc.cn/news/368937.html

相关文章:

  • 三十七篇:大数据架构革命:Lambda与Kappa的深度剖析
  • Vue3【十五】标签的Ref属性
  • Java实现数据结构——顺序表
  • 线程知识点总结
  • 计算机网络:数据链路层 - 扩展的以太网
  • 视频修复工具,模糊视频变清晰!
  • 协程库——面试问题
  • 数据结构与算法题目集(中文)6-2顺序表操作集
  • 8086 汇编笔记(十二):int 指令 端口 直接定址表
  • 揭开FFT时域加窗的奥秘
  • 【AI基础】第二步:安装AI运行环境
  • 【MySQL】聊聊唯一索引是如何加锁的
  • k8s-CCE使用node节点使用VIP--hostNetworkhostPort
  • 18、关于优化中央企业资产评估管理有关事项的通知
  • AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型
  • 速盾:图片cdn加速 免费
  • 贪心算法例子
  • vivado HW_ILA_DATA、HW_PROBE
  • refault distance算法的一点理解
  • 软件安全技术【太原理工大学】
  • 异常(Exception)
  • 一文者懂LLaMA 2(原理、模型、训练)
  • MySQL 存储函数及调用
  • 设计模式七大原则-单一职责原则SingleResponsibility
  • msfconsole利用Windows server2008cve-2019-0708漏洞入侵
  • Reinforcement Learning学习(三)
  • hw meta10 adb back up DCIM
  • Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)
  • 从河流到空气,BL340工控机助力全面环保监测网络构建
  • 零拷贝技术