一、C++类库与C#类库相互调用
1、C++调用C#类库
1.准备C#类库(dll文件)
1.1.创建C#类库:

右击项目类库生成即可,
出现.dll(类库)与.pdb(pdb文件包含了编译后程序指向源代码的位置信息,
用于调试的时候定位到源代码,主要是用来方便调试的)两个文件。
设置仅仅生成.dll类库,可以删除.pdb文件

1.准备C++类库(dll文件)
在VS2017中新建->项目->Visual C++->Windows桌面->动态链接库;

在项目属性中->常规中选择无公共语言支持,即不创建托管C++类库;

右键头文件---》添加---》新建项(添加.h头文件)
右键源文件---》添加---》新建项(添加.cpp源文件)

代码分别:
mydll.h:
#pragma once
extern "C" _declspec(dllexport) int _stdcall add(int a,int b);

mydll.cpp:
#include "stdafx.h"
#include "mydll.h"
int _stdcall add(int a, int b)
{
return (a+b);
}

然后右键解决方案---》重新生成解决方案(先选择Release)(已经生成动态库了)

此路径

c#调用
using System;
using System.Runtime.InteropServices; namespace ConsoleAppTemp
{
class Program
{
[DllImport("DllTest.dll")] //DllImport 必须引用using System.Runtime.InteropServices;
public static extern int add(int a, int b); //可以通过EntryPoint特性指定函数入口,然后为函数定义别名
[DllImport("HelloWorldLib.dll", EntryPoint = "add")]
public static extern int CustomName(int a, int b);
static void Main(string[] args)
{
int a = add(, );
Console.WriteLine("输出结果为:" + a.ToString());
//跟上面是一样的
int b = add(, );
Console.WriteLine("输出结果为:" + b.ToString());
Console.ReadKey();
}
}
}
打开前面C++库生成的目录,将HelloWorldLib.dll复制到C#工程的Debug目录下。
也可以不复制,只需在引用dll的时候写上完整路径就行了。这里我是直接复制到Debug目录下

一、C++类库与C#类库相互调用的更多相关文章
- C++CLR类库封装Native类库并用C#调用 - 草稿
1.创建Native类库 新建项目->其他语言->Visual C++->Win32控制台应用程序->DLL 添加头文件 添加源文件 选择生成路 ...
- C&C++——C函数与C++函数相互调用问题
C C++相互调用 在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题.近来在主程序是C语 ...
- C# 用XiliumCefGlue做浏览器,JS和C#相互调用
原文:C# 用XiliumCefGlue做浏览器,JS和C#相互调用 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013564470/artic ...
- ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解
一.ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载. 公共类库 公共类库通常是指ThinkPHP/Library ...
- C#-概念-基础类库:基础类库
ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...
- Android和JavaScript相互调用的方法
转载地址:http://www.jb51.net/article/77206.htm 这篇文章主要介绍了Android和JavaScript相互调用的方法,实例分析了Android的WebView执行 ...
- 多个Activity相互调用和Intent
MainActivity.java和OtherActivity.java的相互调用 首先MainActivity.java是Android程序自带的,新建一个类OtherActiviy extends ...
- JS代码和OC代码的相互调用
JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...
- C程序与Lua脚本相互调用
Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...
- Unity3D中C#和js方法相互调用
通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets". "Pro Standard Assets" ...
随机推荐
- 果蝇优化算法(FOA)
果蝇优化算法(FOA) 果蝇优化算法(Fruit Fly Optimization Algorithm, FOA)是基于果蝇觅食行为的仿生学原理而提出的一种新兴群体智能优化算法. 果蝇优化算法(FOA ...
- Elasticsearch结构化搜索与查询
Elasticsearch 的功能之一就是搜索,搜索主要分为两种类型,结构化搜索和全文搜索.结构化搜索是指有关查询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可 ...
- (转载)《利用Python进行数据分析·第2版》电子书
https://www.jianshu.com/p/04d180d90a3f https://www.jianshu.com/p/04d180d90a3f https://www.jianshu.co ...
- Maps.newHashMap 和 new HashMap的区别
区别: (1)Map<String, Object> result = new HashMap<String,Object>(); 这种是java原生API写法,需要你手动加泛 ...
- mysql group by 去重 分类 求和
w SELECT COUNT(*) FROM ( SELECT COUNT(*) FROM listing_vary_asins GROUP BY asin, countrycode ) AS w; ...
- 《图解 TCP-IP(第 5 版)》
第一章 网络基础知识 计算机网络根据规模可以分为:广域网(WAN: Wide Area Network)和局域网(LAN: Local Area Network) 协议的标准化: 国际标准化组织(IS ...
- Eclipse设置控制台日志输出位置
1.选择服务器配置 2.设置输出文件路径
- 【MM系列】SAP 主要模块及简介
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 主要模块及简介 前言部分 ...
- C++笔记(4)——引用及结构体
引用 C++中有一个很方便的语法叫做引用,作用就是使得函数能够对传入的参数作出全局有效的改动.用法很简单,就是在传入参数的类型后面加上&就可以指明传入的参数是引用. 例子: #include ...
- CDH平台搭建遇到的问题
安装之前遇到的问题: Note: Forwarding request to 'systemctl disable NetworkManager.service'. Removed symlink ...