首页 > 编程语言 >c#和C++数据交互 一CLR篇

c#和C++数据交互 一CLR篇

时间:2024-08-15 09:48:54浏览次数:10  
标签:NativeCalculate c# sum namespace C++ int NativeCPlusWrapper include CLR

1:配置VC++目录:包含目录:头文件的所在路径,#include时用“”
链接器:输入:附加依赖项 如果是clr模板,一定要用lib文件,不然会报链接错误

2:先建立一个简单的dll模板,实现加法运算

点击查看代码NativeCalculate.h
class __declspec(dllexport) NativeCalculate {
          public:
	            static int AddNativate(int a, int b);
      };

#include "NativeCalculate.h"
//#include "pch.h"
int NativeCalculate::AddNativate(int a, int b)
{
    return a+b;
}

3 新建一个CLR模板,WrapperDll指向刚才的lib文件:

点击查看代码
using namespace System;
namespace CPlusWrapper {
    public ref class NativeCPlusWrapper
    {
    public:
        static int Add(int a, int b,int len);
    };
}

#include "NativeCPlusWrapper.h"
#include "NativeCalculate.h"

using namespace CPlusWrapper;

int NativeCPlusWrapper::Add(int a, int b,int len) {
    for (int i = 0; i < len; i++)
    {
    }
    int sum = 0;
    sum = NativeCalculate::AddNativate(a, b);
    return sum;
}

4:这样生成的Dll文件在C#里可以直接引用

5:还有一个疑问:c#的string,在不固定长度的情况下,不知道怎么直接和c++交互;我是看到别人的程序可以直接返回了string

标签:NativeCalculate,c#,sum,namespace,C++,int,NativeCPlusWrapper,include,CLR
From: https://www.cnblogs.com/MachineVIsion-w/p/18360279

相关文章

  • C++ 编译过程
    源码——>预处理器.i文件——>编译器.s文件——>汇编器.o文件——>链接器——>执行程序 预处理器:读取代码里#开头的命令,并把他插入到程序文本里,生产已.i为后缀名的文件编译器:把.i 文件生成汇编文件 .s汇编器:把汇编文件生成二进制文件.a 链接器:链......
  • MemFire Cloud,前端开发新纪元
    在前端开发的世界里,每年都会涌现出各种各样的新技术和工具,但真正能够改变游戏规则的却寥寥无几。而MemFireCloud,就是这样一款能够引领前端开发新纪元的工具。一站式开发神器,懒人的福音对于开发者来说,最烦人的事情莫过于不断地搭建服务、配置环境和开发接口API。这些繁琐......
  • [NSSCTF 2022 Spring Recruit]ezgame
    首先查看本题描述:js分析,源码泄露,信息收集,大致了解了题的解法方向,进入题目页面查看一下,是一个射击游戏,查看源码发现要获得65分才能拿到成绩,一般来说这种游戏基本不可能拿到给定的分数,通常是对源码进行分析然后用bp抓包改包以此来进行分数获得。 结合前面题解的描述,我们先对js文......
  • Hadoop 中的大数据技术:MapReduce(2)
    续Hadoop中的大数据技术:MapReduce(1)第3章MapReduce框架原理3.1InputFormat数据输入3.1.1切片与MapTask并行度决定机制问题引出MapTask的并行度决定了Map阶段的任务处理并发程度,从而影响整个Job的处理速度。思考:对于1GB的数据,启动8个MapTask可以提高集群的并发......
  • Type\USB\PD\雷电,不同C口的区别有哪些?哪家是最强?
    在正式开始之前,想先问大伙儿一个问题,你的手机最高支持多少瓦的快充?从2023年9月12日苹果发布 iPhone15 开始,Type-C接口就宣告了「一捅天下」。对,你没看错,C口目前只是统一了接口形式,但是协议方面……你的C口,我的C口好像不一样。我们先来看下完整的Type-C,它是......
  • 时间数据格式出现time data does not match format valueError
    合并文件夹中多个文件数据后,出现ValueError:timedata'19970004'doesnotmatchformat'%Y%m%d'(match)首先,应该查看数据,是数据是否格式正确,我的错误来源于将多个文件合并后,多行标题也在不同的位置进行合并,导致本应该是数据的一行成为了标题行解决方法1:查看数据是否存在......
  • 使用 TypeScript 在 React JS 中进行路由
    一.介绍单页应用程序(SPA)中的路由支持在视图之间导航,而无需重新加载应用程序。ReactRouter是React应用程序中路由的标准库。本文简要概述了使用TypeScript设置路由的方法。二.设置项目创建一个新的React项目npxcreate-react-appreact-router-ts--template......
  • java使用动态链接库读取Fanuc设备,在linux环境部署时报错:FOCAS2 log file is not found
    在linux环境中,使用java调用动态链接库的方式读取Fanuc,报错“FOCAS2logfileisnotfound”解决办法linux环境使用cnc_allclibhndl3之前,需要先使用cnc_startupprocess启用并指定日志文件,否则会报错:"FOCAS2logfileisnotfound"。会包含cnc_startupprocess,windows的dll库......
  • 使用 JavaScript 进行线性搜索
    一.介绍线性搜索,也称为顺序搜索,是一种用于在列表中查找特定值的简单搜索算法。它的工作原理是逐个检查列表中的每个元素,直到找到所需的值或到达列表的末尾。以下是线性搜索如何工作的逐步描述。**从头开始:**从列表的第一个元素开始。**比较各个元素:**将当前元素与目标值......
  • C# 中 Tuple 与 ValueTuples 之间的区别
    在C#中,元组和值元组都用于在单个变量中存储多个值。但它们在语法、功能和性能方面存在一些关键差异。一.Tuples(元组)元组是一种引用类型,长期以来一直是.NET的一部分。它们是使用System.Tuple类创建的。例子usingSystem;classProgram{staticvoidMain()......