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#类库相互调用的更多相关文章

  1. C++CLR类库封装Native类库并用C#调用 - 草稿

    1.创建Native类库 新建项目->其他语言->Visual C++->Win32控制台应用程序->DLL     添加头文件       添加源文件       选择生成路 ...

  2. C&C++——C函数与C++函数相互调用问题

    C C++相互调用 在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题.近来在主程序是C语 ...

  3. C# 用XiliumCefGlue做浏览器,JS和C#相互调用

    原文:C# 用XiliumCefGlue做浏览器,JS和C#相互调用 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013564470/artic ...

  4. ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解

    一.ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载.        公共类库 公共类库通常是指ThinkPHP/Library ...

  5. C#-概念-基础类库:基础类库

    ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...

  6. Android和JavaScript相互调用的方法

    转载地址:http://www.jb51.net/article/77206.htm 这篇文章主要介绍了Android和JavaScript相互调用的方法,实例分析了Android的WebView执行 ...

  7. 多个Activity相互调用和Intent

    MainActivity.java和OtherActivity.java的相互调用 首先MainActivity.java是Android程序自带的,新建一个类OtherActiviy extends ...

  8. JS代码和OC代码的相互调用

    JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...

  9. C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  10. Unity3D中C#和js方法相互调用

    通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets". "Pro Standard Assets" ...

随机推荐

  1. php 抽象类适配器设计模式

    以Kohana Cache设计为例 1.抽象类:E:\html\tproject\framework\modules\cache\classes\Cache.php <?php defined( ...

  2. 【LOJ6225&网络流24题】火星探险问题(费用流)

    题意: 思路: [问题分析] 最大费用最大流问题. [建模方法] 把网格中每个位置拆分成网络中两个节点<i.a>,<i.b>,建立附加源S汇T. 1.对于每个顶点i,j为i东边 ...

  3. TCP UDP 包的最大字节

    UDP 1500,常见会设置为1024 如: ]; TCP 60*1024 UDP如果设置为1024,但是实际发送超出1024,会直接接不到应答,所以,如果你的其他命令都能正常接收,而这个命令莫名其妙 ...

  4. XXX is not a function

    今天,一个以前的小伙伴跟我说他遇到了一个问题,调试了将近两天(这家伙一开始不打算干程序员,跑去干了两个月销售,现在又想回来写代码了,所以就自己折腾一个demo,免得面试的时候被问住) 我把他的代码从头 ...

  5. (3.3)狄泰软件学院C++课程学习剖析四

    对课程前面40课的详细回顾分析(二) 1.一个类的成员变量是对于每个对象专有的,但是成员函数是共享的. 2.构造函数只是决定一个对象的初始化状态,而不能决定对象的诞生.二阶构造人为的将初始化过程分为了 ...

  6. SQL字串截取函数编写及应用

    SQL里面一种用来截取字符串的方法,用的是表函数实现字符串截取并应用的SQL操作语句中. .截取字符串表函数 ALTER FUNCTION [dbo].[SplitToTable] ( -- Add ...

  7. 前端学习记录 week 1

    前端学习记录 week 1 基础知识 CSS盒模型 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用.CSS盒模型本质上是一个盒子,封 ...

  8. jQuery插件simplePagination的使用-踩坑记_03

    jQuery插件simplePagination的使用 正在熟悉项目上的代码,新添加了一个需要,需要对表单进行分页,之前的代码中是有分页的代码的,看了老半天,也没看太明白.之前的项目比较久远,继续熟悉 ...

  9. IDEA设置Ctrl+滚轮调整字体大小

    IDEA设置Ctrl+滚轮调整字体大小(转载)   按Ctrl+Shift+A,出现搜索框 输入mouse: 点击打开这个设置:勾选 点击ok,之后就可以通过Ctrl+滚轮 调整字体大小了.

  10. 多进程---multiprocessing/threading/

    一.多进程:multiprocessing模块 多用于处理CPU密集型任务 多线程 多用于IO密集型任务 Input Ouput 举例: import multiprocessing,threadin ...