【转】C++/CLI入门系列 第二篇:封装C++ dll库,提供接口给C#调用

看了第一篇感觉没啥用对吧,来点稍微有用的。

1、先建个c#工程,依次 file -> new -> project,选择 visula c# -> console application,写工程名,点 ok。

2、再建个c++ dll工程。依次 file -> add -> new project。选择 visual -> win32 console application,点 ok -> next,选择 dll -> finish。

3、建立cli工程。依次 file -> add -> new project。选择 visula c++ -> clr -> class library,写工程名,点 ok。

4、创建结束,开始配种,啊呸!配置。

1)、c#工程默认平台any cpu,强迫症犯了,改成x86,编译下,生成目标debug路径:.\bin\x86\debug。

2)、修改c++工程输出目录、cli工程输出目录、cli工程库引入路径等为上方目录。

3)、修改cli引入头文件路径为包含CppDll.h的路径。

4)、依次编译c++工程,cli工程

5)、c#工程导入CliDll,依次选择 c#工程 -> references -> 点右键 -> add reference -> browse -> 选择debug路径下由cli工程生成的dll文件。

6)、编译c#工程,最后运行。

附源码:

github仓库项目地址:git@github.com:fx-odyssey/CS_Cli_Cpp.git(vs2008工程,打开可直接运行)

//CppDll.h
#pragma once
#include <stdio.h>
#include <stdlib.h>#ifdef CPPDLL_EXPORTS#define CPP_EXPORTS __declspec(dllexport)
#else#define CPP_EXPORTS __declspec(dllimport)
#endifextern "C" CPP_EXPORTS int Add(int a, int b);extern "C" CPP_EXPORTS int Sub(int a, int b);extern "C" CPP_EXPORTS int Mul(int a, int b);extern "C" CPP_EXPORTS  int Div(int a, int b);***************************************// CppDll.cpp
#include "stdafx.h"
#include "CppDll.h"int Add(int a, int b)
{return a + b;
}int Sub(int a, int b)
{return a - b;
}int Mul(int a, int b)
{return a * b;
}int Div(int a, int b)
{return a / b;
}**************************************// CliDll.h
#pragma once
#include <iostream>
#include "CppDll.h"using namespace System;
using namespace System::Runtime::InteropServices;
using namespace System::Collections::Generic;
using namespace System::Collections;
using namespace std;#pragma comment(lib, "CppDll.lib")
#pragma managed
namespace CliDll {public ref class Arith{public:Arith();~Arith();int AddCli(int a, int b);int SubCli(int a, int b);int MulCli(int a, int b);int DivCli(int a, int b);};
}**************************************// CliDll.cpp
#include "stdafx.h"
#include "CliDll.h"using namespace CliDll;CliDll::Arith::Arith(){}CliDll::Arith::~Arith(){}int CliDll::Arith::AddCli(int a, int b)
{return Add(a, b);
}int CliDll::Arith::SubCli(int a, int b)
{return Sub(a, b);
}int CliDll::Arith::MulCli(int a, int b)
{return Mul(a, b);
}int CliDll::Arith::DivCli(int a, int b)
{return Div(a, b);
}*************************************//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CliDll;namespace CSProject
{class Program{static void Main(string[] args){Arith arith = new Arith();int back1 = arith.AddCli(1, 2);Console.WriteLine(back1.ToString());int back2 = arith.SubCli(3, 4);Console.WriteLine(back2.ToString());int back3 = arith.MulCli(4, 5);Console.WriteLine(back3.ToString());int back4 = arith.DivCli(8, 4);Console.WriteLine(back4.ToString());Console.ReadLine();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

zookeeper完全分布搭建-安装-配置

我这里是用的五台机器。 官网下载解压zookeeper&#xff0c;这里用的3.4.6 解压到/usr/local下 修改配置文件 1- 首先进入到zookeeper-3.4.6下的conf文件夹下 cd /usr/local/zookeeper/zookeeper-3.4.6/confls查看文件&#xff0c;然后拷贝zoo_sample.cfg并重命名为zoo.cf…

Python 数据分析三剑客之 Matplotlib(四):线性图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

Hbase error: KeeperErrorCode = NoNode for /hbase/master错误

Hbase运行hbase shell输入status与list测试会报错error: KeeperErrorCode NoNode for /hbase/master 经过两天的不挺找错&#xff0c;更改&#xff0c;解决&#xff0c;出现这个错误的原因是hadoop与Hbase版本不兼容所致。 别用hadoop3 经过几天的奋战&#xff0c;开始用的…

Python 数据分析三剑客之 Matplotlib(五):散点图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

hadoop集群-格式化namenode节点后,从节点的datanode不能启动,或者是datanode启动到主节点上。

进行二次namenode格式化前&#xff0c;请注意&#xff1a; hadoop namenode -format进行着一步前&#xff0c;要把以前格式化的内容删掉&#xff0c;如果&#xff0c;你的路径是在hadoop文件夹内&#xff0c;那么直接格式化即可&#xff0c;如果是在外部创建的文件夹&#xff…

Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

Hive环境搭建(完整版)-配置

Hive部署&#xff1a; 前提&#xff1a; 在安装Hive之前&#xff0c;要求先预装&#xff1a; - 安装JDK 8 - 安装Hadoop-2.7.7 - 安装MySQL 5.6.x&#xff01;&#xff01;&#xff01;我这里主节点叫chun1&#xff0c;根据自己的进行修改 一、安装 1. 下载hive&#xff0c…

Magento微信支付接口开发小记

姗姗来迟的Magento微信支付接口插件 半年之前&#xff0c;有朋友网站需要接入微信支付&#xff0c;是Magento站&#xff0c;于是花费了近二周时间&#xff0c;研究微信开发文档、示例代码&#xff0c;并初步制作了个支付模块&#xff0c;不巧的是&#xff0c;朋友的微信支付接…

VMware安装出错-无法安装服务“VMware Authorization Service”,请确保您有足够的权限安装系统服务;centos7网络服务不可用,主ip地址:网络信息不可用

今天遇到一个bug&#xff0c;VMware突然网络服务不可用了&#xff0c;虚拟机里右上角有网络但是点开不显示网络的连接信息。也不能上网&#xff0c;不能ping通外网&#xff08;百度&#xff09; VMware下显示 主ip地址&#xff1a;网络信息不可用 尝试了重启网络&#xff0c;重…

Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

访问网络共享时出现“拒绝访问”

今天公司副总说要我连接一下前面的打印机&#xff0c;二话不说&#xff0c;屁颠屁颠的就到现场了。虽然是简单的活&#xff0c;但也得去不是。 到老总计算机上 开始--运行 \\192.168.0.45 &#xff08;装有打印的计算机&#xff0c;OS是XP系统&#xff01;&#xff09; 结果出…

zookeeper集群自动启动-关闭-查询的shell脚本

由于zookeeper启动需要在每台虚拟机都进行zkServer.sh start&#xff0c;很不方便&#xff0c;由此写个shell脚本来进行一个命令全部启动。 前提&#xff1a;配置好ssh免密登录&#xff0c;并且每台虚拟机都可以互通&#xff0c;没配置好的可以看下我的hadoop集群搭建里有免密…

Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】Office365完整离线安装包下载及自定义安装教程

Office365部署方法 概要提示&#xff1a; 全文内容归结起来其实也就2条命令 下载&#xff1a;D:\365\setup.exe /download D:\365\Configuration.xml&#xff08;此命令为1条&#xff0c;不可以拆分为2行输入&#xff09; 安装&#xff1a;D:\365\setup.exe /configure D:\3…

Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】中国式管理最有趣的地方,可能就在这些关键词之中

曾仕强老先生的中国式管理&#xff0c;就像中医中药&#xff0c;你说他对吗&#xff1f;根本不符合现代的科学逻辑&#xff0c;有些甚至荒诞。然而&#xff0c;即便这样&#xff0c;依然能西医所不能&#xff0c;这就是他的魅力。让我们一探究竟&#xff0c;对也好&#xff0c;…

Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

Hbase学习-一步一步慢慢来

HBASE是一个分布式系统 其中有一个管理角色&#xff1a; HMaster(一般2台&#xff0c;一台active&#xff0c;一台backup)&#xff08;我用的五台&#xff09; 其他的数据节点角色&#xff1a; HRegionServer(很多台&#xff0c;看数据容量) 1.安装可以参考我的Hbase安装&…

Python 数据分析三剑客之 Matplotlib(十一):最常用最有价值的 50 个图表

CSDN 课程推荐&#xff1a;《Python 数据分析与挖掘》&#xff0c;讲师刘顺祥&#xff0c;浙江工商大学统计学硕士&#xff0c;数据分析师&#xff0c;曾担任唯品会大数据部担任数据分析师一职&#xff0c;负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…