首页 > 编程语言 >C++调用C# (使用C++/CLI)

C++调用C# (使用C++/CLI)

时间:2024-03-25 20:45:06浏览次数:27  
标签:CLI C# CSharpWrapper C++ int Add NativeCSharpWrapper

简介

C++/CLI简介见上文 C#调用C++ (使用C++/CLI) - 咸鱼翻身? - 博客园 (cnblogs.com)

新建解决方案->CPlusCSharpSolution

新建C#类库->CSharpNative

新建类NativeCalculate

1     public class NativeCalculate
2     {
3         public int Add(int a, int b)
4         {
5             return a + b;
6         }
7     }

 

新建CLI类库(DLL)->CSharpWrapper

 添加CSharpNative引用

 添加NativeCSharpWrapper类

//NativeCSharpWrapper.h

#pragma once

using namespace System;

namespace CSharpWrapper {
    public ref class NativeCSharpWrapper
    {
        public:
        static int Add(int a, int b);
    };
}


//NativeCSharpWrapper.cpp

#include "pch.h"

#include "NativeCSharpWrapper.h"

using namespace CSharpWrapper;
using namespace CSharpNative;

int NativeCSharpWrapper::Add(int a, int b) {
    int sum = 0;
    NativeCalculate^ nativeCalculate = gcnew NativeCalculate(); // 创建C#类的实例
    sum = nativeCalculate->Add(a, b); // 调用C#方法
    return sum;
}

创建非托管类NativeCSharpWrapper 

创建非托管类调用NativeCSharpWrapper 并提供对外导出

//NativeCalculate.h

#pragma once
#ifndef NATIVE_CLASS_H
#define NATIVE_CLASS_H

class __declspec(dllexport) CPlusCalculate {
public:
    static int Add(int a, int b);
};
#endif // NATIVE_CLASS_H
 
// NativeCSharpWrapper.cpp

#include "pch.h"
#include "NativeCSharpWrapper.h"

using namespace CSharpWrapper;
using namespace CSharpNative;

int NativeCSharpWrapper::Add(int a, int b) {
    int sum = 0;
    NativeCalculate^ nativeCalculate = gcnew NativeCalculate(); // 创建C#类的实例
    sum = nativeCalculate->Add(a, b); // 调用C#方法
    return sum;
}

新建C++控制台项目->CPlusConsoleApplication

添加包含目录 CSharpWrapper.h

添加CSharpWrapper.lib附加库目录

添加附加库依赖项CSharpWrapper.lib

main函数调用

main函数调用C++/CLI项目CSharpWrapper进而调用CSharpNative

#include <iostream>
#include "CPlusCalculate.h"
int main()
{
    int sum = CPlusCalculate::Add(50, 40);
}

标签:CLI,C#,CSharpWrapper,C++,int,Add,NativeCSharpWrapper
From: https://www.cnblogs.com/mchao/p/18094761

相关文章

  • C#调用C++ (使用C++/CLI)
    简介C++/CLI(C++CommonLanguageInfrastructure)是一种允许在.NET平台上创建托管代码(managedcode)和非托管代码(unmanagedcode)之间互操作的语言。其原理可以概括如下:编译器支持:C++/CLI编译器能够编译同时包含托管和非托管代码的源文件。这使得在同一个项目中可以混合使用......
  • 038Confluence数据导出或备份
    一、从Confluence导出zip文件Server版导出步骤打开需要迁移的空间,选择空间管理,点击内容工具>导出。在导出格式中勾选HTML,点击下一个,选择普通导出。勾选需要导出的空间页面,选择完毕后点击导出。导出完毕后,点击here下载到本地 注:空间管理按键通常在页面左下......
  • Codeforces Round 936 (Div. 2) E
    SofiaandStrings题面翻译\(t\)组数据。每一次测试,有长度为\(n\)的序列\(s\),长度为\(m\)的序列\(t\)。你可以对\(s\)进行两种操作:删除\(s_i,1\lei\le|s|\)(\(s\)从\(1\)开始标号).将\(s_l,s_{l+1},\dots,s_r\)排序(\(1\lel\ler\le|s|\))。上面\(|s|......
  • Pytorch之transforms
    文章目录一、transforms是什么?二、Tensor1.为何引入tensor类型的变量呢2.代码示例二、Normalize类三、Resize三、Compose三、Random_Crop一、transforms是什么?transforms对应transform.py文件。可以理解成一个工具箱,里面定义的各种类和方法,可以处理图片,对图片进......
  • 蓝桥杯n皇后问题C++
    用到了dfs算法#include<iostream>usingnamespacestd;intn;inta[10][10]={0};intsum=0;voidprin(inta[][10]){for(inti=0;i<n;i++){for(intj=0;j<n;j++){cout<<a[i][j]<......
  • C语言:自定义数据类型——结构体
    文章目录结构体类型的声明结构体的声明结构体变量的创建和初始化结构的特殊声明结构体的自引用结构体内存对齐对齐规则修改默认对齐数结构体传参结构体类型的声明结构体的声明structtag{ member-list;//成员}variable-list;//变量名例如描述一个学生str......
  • C++动态内存管理
    目录C/C++内存分配C++内存管理C++内存管理介绍C++内存管理使用C++内存管理基本语法operatornew和operatordelete函数定位new表达式(placement-new)基本语法使用场景malloc/free和new/delete相同点不同点C/C++内存分配在C语言动态内存管理章节已经了解到内......
  • 论文解读(UDA-GCN)《Unsupervised Domain Adaptive Graph Convolutional Networks》
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:UnsupervisedDomainAdaptiveGraphConvolutionalNetworks论文作者:论文来源:2020aRxiv论文地址:download 论文代码:download视屏讲解:click1-摘要图卷积网络(GCNs)在许多与图相关的分析任务中都取得了令人印......
  • The Mercedes Star Diagnostic Tool: Revolutionizing Garage Technology
    Intheever-evolvingworldofautomotivetechnology,Mercedes-Benzhasconsistentlybeenattheforefrontofinnovation.Asvehiclesbecomeincreasinglycomplex,diagnosingandrepairingthemrequiresadvancedtoolsandexpertise.Onesuchtoolthathasr......
  • CSS
    CSS层叠样式表(英文全称:CascadingStyleSheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化CSS能够对网页中元素位置的排版进行像素......