C++项目中调用C#库

最近有个功能在实现的时候要么要求 C++ 版本比较高(C++17)、要么要求的 Qt 版本比较高、要么要求 windows 版本比较高,而且也没有比较好的第三方 C++ 库。
无意间发现 C# 早就实现了该功能,故准备使用 C# 实现具体功能,在 C++ 项目中调用自己封装好的库。
这里简单编写了一下 demo 先成功实现 C++ 调用 C#。

生成 C# 库

  1. 新建 C# 类库项目: 在这里插入图片描述2. 添加如下代码:提供相加和相乘两种简单的方法用于测试:
    在这里插入图片描述3. 设置类库项目属性:注意要将生成项目下的目标平台设置为调用该类库项目的 C++ 项目相同。
    在这里插入图片描述4. 生成解决方案即生成相关的库文件,其存放路径为步骤 3 中指定的路径:在这里插入图片描述生成的库文件路径:
    在这里插入图片描述

在 C++ 项目中调用 C# 库

  1. 新建 C++ 项目:在这里插入图片描述
  2. 设置项目属性:公共语言运行时支持选择clr:在这里插入图片描述3. 将 C# 库文件分别放到代码目录和生成目录中:在这里插入图片描述
    在这里插入图片描述4. 添加如下代码:
    C# 生成的 dll 文件需要使用 #using 进行引入,不能使用 #include 引入。
    C# 生成对象要使用 gcnew 其作用和 new 类似都是生成一个对象并返回其指针。
    调用 C# 库生成的对象指针不能用 * 必须要用 ^,使用和 C++ 指针相同。
    在这里插入图片描述5. 运行 C++ 工程,得到的输出如下:
    在这里插入图片描述

另一种调用方法

使用 #import 引入 xx.tlb 文件。暂时不展开,因为不符合我项目的需求。

注意事项及可能遇到的问题

  • C# 库和 C++ 项目的目标平台必须相同。
  • C# 目标平台最好指定一个,尽量不要使用 Any。
  • C++ 项目必须在代码目录和生成目录下同时添加 C# 库文件,否则会提示找不到相关文件,或编译成功但启动时报错。
  • C++ 项目中可以使用 using namespace xx 包含 C# 的命名空间,也可以像截图中那样直接使用 xx::func
  • 如果使用 #import 方法添加 tlb 文件提示有误的话,可以将 设置 >> C/C++ >> 多处理器编译 设置为
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值