C#使用CLR/C++的DLL间接调用Native C++的DLL

C#使用CLR/C++的DLL间接调用Native C++的DLL

 

开发环境:win 7  VS2010

   

    简介:C#的exe使用CLR/C++间接调用Native C++的DLL.

 

第一步:创建一个C#的Console Application工程-->命名“ConsoleApplication1”。

第二步:创建一个CLR/C++的工程,右击“ConsoleApplication1”上面的“Solution 'ConsoleApplication1'”-->Add-->NewProject-->CLR-->Class Library -->命名“NetCpp”。

第三步:创建一个Native C++工程,同上,右击-->Add --> NewProject -->Win32 -->Win32 Project

         -->命名“NativeCpp”-->Next-->选择"DLL"-->Export symbols.

 

以上创建三个工程,下面开始编写代码与设置环境:

 

第四步:打开"NativeCpp.h"在其中加入一些成员函数与变量;

#define NATIVECPP_API __declspec(dllexport)

// This class is exported from the NativeCpp.dll

class NATIVECPP_API CNativeCpp {

public:

CNativeCpp(void);

// TODO: add your methods here.

int getA()

{

  return 20;

}

};

第五步:在NetCpp工程中引用NativeCpp的DLL;

右击NetCpp工程-->Properties

 

 

 

 







第六步:打开CLR/C++工程的"NetCpp.h",加入#include "NativeCpp.h"

#include "NativeCpp.h"

using namespace System;

namespace NetCpp {

public ref class Class1

{public:

int getB()

{

CNativeCpp a;

return a.getA();

}

};

}

第七步:右击ConsoleApplication1工程的References-->Add Reference-->Projects-->选择"NetCpp"

        再把Native C++产生的DLL复制到C#工程的bin\\Debug\\目录下.(若想在修改了NativeC++代码后动态的更新Native C++的DLL,需要在C#工程的属性中设置:PropertiesàBuild EventsàPost-build event command line:写入命令:copy  $(SolutionDir)Debug\NativeCpp.dll   $(TargetDir)    

 

第八步:打开ConsoleApplication1工程program.cs。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

NetCpp.Class1 cl = new NetCpp.Class1();

Console.WriteLine("getA()" + c1.getB().ToString());

Console.Read();

}

}

}

 

原文地址:http://blog.sina.com.cn/s/blog_a50d2d7401018rxr.html

转载于:https://www.cnblogs.com/heyunxu/p/6480815.html

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

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

相关文章

列表输出循环左移_python 列表推导式(经典代码)(21)

文章首发微信公众号,微信搜索:猿说python截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.…

leetcode100. 相同的树(dfs)

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / \2 3 2 3[1,2,3], [1,2,3]输出: true### 代码java /*** Definiti…

k8s 分发证书文件 启动文件

接着上面的博客继续写 准备三台主机 192.168.1.71 192.168.1.72 192.168.1.73 现在k8s压缩包 我使用时1.12版本 不能下载请FQ 百度网盘提供1.12版本 https://pan.baidu.com/s/1Ty6DRaRtL-0HiTCwy5ubPA n6cy 192.168.1.71 执行 pwd -> /tmp tar -zxf kubernetes-server-lin…

如何确保您的Progressive Web App保持其Lighthouse审核分数

by Ondrej Chrastina通过Ondrej Chrastina 如何确保您的Progressive Web App保持其Lighthouse审核分数 (How to make sure your Progressive Web App keeps its Lighthouse audit score) I bet most of you have implemented a web application before. Some of you may even …

计算机字节换算在线,计算机字节换算(计算机字节换算器)

8bit(位)1Byte(字节)1024Byte(字节)1KB1024KB1MB1024MB1GB 换算率约等于1000(1024),从大到小顺序为T、GB、MB(兆Zhao)、KB、B再小就是位了。.字节(Byte 发音:/‘bait/):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。 在ASCII码中…

Robot Framework自动化测试(一)--- 安装

所需环境: 1、python 2、robotframework  https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3、wxPython ——>是python的一个GUI库,下面要安装的RIDE是基于这个库开发的,所以要安装 地址:https://wxpython.org…

leetcode1296. 划分数组为连续数字的集合(贪心算法)

给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以,请返回 True;否则,返回 False。 示例 1: 输入:nums [1,2,3,3,4,4,5,6], k 4 输出&…

linux_svn命令操作

转至元数据起始 linux下svn命令大全 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件 svn add file例如&#xff1a…

用python玩转数据慕课答案第四周_大学慕课用Python玩转数据章节测试答案

大学慕课用Python玩转数据章节测试答案更多相关问题渗透泵型片剂控释的基本原理是A.减小溶出B.减慢扩散C.片剂膜外渗透压大于片剂膜内,将片内药物从语义学批评是什么?As usual, _____ man was given his individual as…

html怎么让五张照片并排显示,最考验右脑5张照片,30s内能发现问题都是牛人,PS做不出来...

我们的大脑认定这种空间不可能存在,然而却要忍受眼睛亲眼所见其存在的苦恼。“眼见为实”已经成为错误的判断标准,于是你会感到很过瘾,颠覆的快感。事实上,通过色彩,不仅可以考量人们的视力,更能判断大脑水…

aws v2.2.exe_如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服务器...

aws v2.2.exeby Sumeet Kumar通过Sumeet Kumar 如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服务器 (How to create a Django server running uWSGI, NGINX and PostgreSQL on AWS EC2 with Python 3.6) Getting a server up and running …

Cloud in Action: Install OpenStack Ocata from scratch

Cloud in Action: Install OpenStack Ocata from scratch薛国锋 xueguofeng2011gmail.comOpenStack can control and manage large pools of compute, storage, and networking resources throughout a datacenter, througha dashboard or via the OpenStack API, and work…

jQUery中closest和parents的主要区别是

①,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;②,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用…

leetcode1276. 不浪费原料的汉堡制作方案(贪心)

圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。 给你两个整数 tomatoSlices 和 cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下: 巨无霸汉堡&#xff…

CentOS7配置ip

CentOS7配置ip 安装完centos7,重启就可以与linux第一次接触了。我是最小化安装,所以没有图形界面。登录介面显示发型版本和内核版本: CentOS Linux 7(Core) Kernel 3.10.0-862.e17.x86_64 on an x86_64 下面就是登录提示localhost login。在后面输入roo…

react开发模式_通过开发带有精灵动画的游戏来学习高级React模式

react开发模式by Pavel Vlasov通过帕维尔弗拉索夫(Pavel Vlasov) 通过开发带有精灵动画的游戏来学习高级React模式 (Learn advanced React patterns by developing a game with sprite animation) Have you ever wanted to learn some advanced React patterns? Or build you…

js脚本锁计算机软件,JS使用插件cryptojs进行加密解密数据实例

本文实例讲述了JS使用插件cryptojs进行加密解密数据。分享给大家供大家参考,具体如下:Testing websocketsvar key BOTWAVEE;//CBC模式加密function encryptByDESModeCBC(message) {var keyHex CryptoJS.enc.Utf8.parse(key);var ivHex CryptoJS.enc.U…

nginx、Apache、IIS服务器解决 413 Request Entity Too Large问题方法汇总

一、nginx服务器 nginx出现这个问题的原因是请求实体太长了。一般出现种情况是Post请求时Body内容Post的数据太大了,如上传大文件过大、POST数据比较多。处理方法 在nginx.conf增加 client_max_body_size的相关设置, 这个值默认是1m,可以增加到8m以增加提…

python代理池好难啊_新人不会自己搭建代理池?快来引用大佬的

新人不会自己搭建代理池?快来引用大佬的对于新人学习爬虫来说,虽然不会爬取太难的网站,但是有时候爬取的数据量过大的时候,也会遇到返回不了数据的问题,这时候打开网页一看.可能会看到"你的ip访问频率太高"这样的提示,出现这种问题的原因可能是,你被封ip啦.但是爬虫…

pat 1123(AVL)

题意:给n个数,按照顺序插入AVL,输出层次遍历,如果这颗AVL是完全二叉树,输出YES 否则输出NO 当时考试的时候。忘记AVL什么时候旋转了,数据结构不会写,感觉药丸 判断完全二叉树,这个简…