由于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的更多相关文章

  1. C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)

        C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...

  2. C#动态调用C++编写的DLL函数

    C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...

  3. 使用clr 调用C#编写的dll中的方法的全解释

    使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...

  4. 通过C#去调用C++编写的DLL

    这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译 ...

  5. C++项目中采用CLR的方式调用C#编写的dll

    1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...

  6. Delphi7调用DelphiXE编写的DLL问题

    http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...

  7. C#调用C++编写的dll

    界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C# ...

  8. Delphi 调用C# 编写的DLL方法

    近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个“ ...

  9. C# 调用delphi编写的dll

    技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspe ...

  10. PB调用C#编写的DLL

    C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了 ...

随机推荐

  1. ActiveX插件

    C#制作ActiveX插件 首先新建项目--->类库,取名:ActiveXDemo 右键项目属性:应用属性==>程序集信息=>使程序集Com可见, 生成==>输出==>为 ...

  2. 利用Spring Hibernate注解packagesToScan的简化自动扫描方式

    转自:https://blog.csdn.net/wzygis/article/details/28256045

  3. docker迁移步骤

    1. 创建快照:docker commit -p 30b8f18f20b4 container-backup (可以通过docker images 查看docker镜像) 2. 镜像保存在本地机器中: ...

  4. Bata版本

    一.团队成员 1)冯鹏(组长) 201731062617 2)鲜泽   201731062612 3)李家豪 201731062614 4)郭经伟 201731062615 5)程前勇 2017310 ...

  5. ios 中生成随机数

    ios 有如下三种随机数方法: 1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变        int i = rand() % 5; 2.    s ...

  6. webform 下使用autofac

    官网介绍: http://docs.autofac.org/en/latest/integration/webforms.html#quick-start HTTP 错误 500.22 - Inter ...

  7. Flask-上传文件和访问上传的文件

     1.1.上传文件和访问上传的文件 upload_file_demo.py from flask import Flask,request,render_template import os from ...

  8. BZOJ 2120 带修莫队

    思路: 暴力能过的 嘿嘿嘿 我是来练带修莫队的嗯 复杂度 O(n^5/3) //By SiriusRen #include <cmath> #include <cstdio> ...

  9. C# 3.0的新特性

    自动属性. 之前定义属性的步骤: private filed + public property. 现在的形式:int id{get;set;}. 可以分别设置get/set的保护级别(protect ...

  10. Hybrid混合开发中schema协议的使用与封装

    混合开发中JS与APP通信的实现原理: JS通过schema协议,传递参数和全局回调函数给APP端 APP执行完(如微信扫一扫)后,调用协议中传入的回调函数,在前端执行回调处理. 默认写法: < ...