C++如何调用C#编写的 DLL
由于C#编绎出来的DLL不是计算机所能直接识别的二进制指令码,需要CLS进行再解释,说到这,我想有些朋友应该知道C#项目需要引用C++编写的DLL时,可以直接引用DLLMPORT来实现调用,而反向的话,C++项目却不能简单靠引用来使用C#编写的DLL。由于C++项目默认配置是没有公共语言运行支持的,因此我们需要更改一些配置,来实现C++项目对C#编写DLL的调用。具体如何操作,我会在接下来的文章中进行说明,以供大家参考。 示例用C#类库文件
、打开Microsoft Visual Studio ,选择文件->新建->项目。
这里写图片描述
、在新建项目窗口中选择其他语言->Visual C#->类库,设置名称:MathDLL,设置解决方案名:MathDLL。
这里写图片描述
、单击确定完成项目创建
、将类Class1重命名为”MathTest“
、为类MathTest添加以下代码: [csharp] view plain copy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MathDLL
{
public class MathTest
{
public int demoAdd(int x, int y)
{
int sum;
sum = x + y;
return sum;
}
}
} C++客户端程序创建
、打开Microsoft Visual Studio ,选择文件->新建->项目。
这里写图片描述 、在新建项目窗口中选择其他语言->Visual C++->Win 32控制台应用程序,设置名称:MathCon,设置解决方案名:MathCon。 、单击确定,在出现的Win32 应用程序向导的概述对话框中点击下一步。 这里写图片描述 、在应用程序设置中,选择应用程序类型下的控制台应用程序,勾选附加选项下的”预编译头“。 、单击完成创建项目 、将C#编写的DLL文件放置在C++的可执行程序目录 、使用#using引用C#编写的DLL文件MathDLL.dll,具体代码如下: [cpp] view plain copy
#include "stdafx.h"
#using "../debug/MathDLL.dll"
using namespace MathDLL;
int _tmain(int argc, _TCHAR* argv[])
{
int sum,x,y;
x=;
y=;
MathTest ^a = gcnew MathTest();
sum=a->demoAdd(x,y);
sum=x+y;
[cpp] view plain copy
printf("计算结果:%d",sum);
return ;
} 、配置C++项目MathCon的属性配置:添加公共语言运行支持。 、运行结果如下:
C++如何调用C#编写的 DLL的更多相关文章
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
		
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
 - C#动态调用C++编写的DLL函数
		
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
 - 使用clr 调用C#编写的dll中的方法的全解释
		
使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...
 - 通过C#去调用C++编写的DLL
		
这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译 ...
 - C++项目中采用CLR的方式调用C#编写的dll
		
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...
 - Delphi7调用DelphiXE编写的DLL问题
		
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...
 - C#调用C++编写的dll
		
界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C# ...
 - Delphi 调用C# 编写的DLL方法
		
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个“ ...
 - C# 调用delphi编写的dll
		
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspe ...
 - PB调用C#编写的DLL
		
C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了 ...
 
随机推荐
- Python·Jupyter Notebook各种使用方法记录
			
标签(空格分隔): Python 一 Jupyter NoteBook的安装 1 新版本Anaconda自带Jupyter 2 老版本Anacodna需自己安装Jupyter 二 更改Jupyter ...
 - springmvc-mvc:resource标签使用
			
转自:http://www.cnblogs.com/gzulmc/p/6746174.html <!-- 配置静态资源 --><mvc:resources location=&quo ...
 - pyCrypto python 3.5--转
			
原文地址:https://gxnotes.com/article/198426.html 问题描述 我发现一些PyCrypto安装程序为Python 3.3和3.4,但没有任何Python 3.5. ...
 - httpclient定时请求实例
			
1.pom.xml <properties> <slf4j.version>1.7.21</slf4j.version> <okhttp.version> ...
 - js闭包概念
			
含义:闭包是一个概念,它描述了函数执行完毕内存释放后,依然内存驻留的一个现象,只要把握这个核心概念,闭包就不难理解了 function a(){ var i=0; function ...
 - 谈谈javascript中原型继承
			
什么是继承?拿来主义:自己没有,别人有,把别人的拿过来使用或者让其成为自己的 如何实现继承的方式 原型继承 混入继承 经典继承 1. 混入继承 由于一个对象可以继承自任意的对象,即:o可以继承自对象o ...
 - ZBrush软件中Brush特性
			
在ZBrush里给用户提供了上百种用于雕刻的笔刷,每种笔刷的显示模式是以红色的两个圆圈,外面的圆圈表示笔刷在进行绘制和雕刻实际影响的范围,而内圆是表示笔刷强度到外圆的衰减的起始位置,可以在Focal ...
 - 阿里云数据库MySQL版快速上手!
			
MySQL是全球最受欢迎的开源数据库,其在各Web应用中均有广泛部署.阿里云数据库MySQL版基于Alibaba的MySQL源码分支,经过双11高并发.大数据量的考验,拥有优良的性能和吞吐量.除此之外 ...
 - easyUI datagarid单元格动态合并
			
第二列根据第一列合并,第三列根据第二列合并.层级关系. /* * tableID表格的id * colList要合并的字段例如:"overcount,totalcount" */ ...
 - ubuntu qq2012
			
wine qq 2012 for linux Ubuntu 64位兼容(12月21日末日版) 版主: byebye, liyijun, smile, wolfstar 发表回复 340 篇帖子 • ...