c#调用c++dll


在这里插入图片描述

前言

llImport导入C++的动态链接库

1、使用步骤

1.用C#创建控制台应用程序,将生成的C++DLL拷贝到工程根目录下。
2.简单介绍DllImport的几个关键属性:
EntryPoint:我们要从DLL中导入的函数名称;(Sum)
CharSet:指示用在入口点种的字符集;(Ansi)
CallingConvention:指示入口点的调用约定;(StdCall)
3.使用DllImport,首先要引用 System.Runtime.InteropServices 命名空间;主要代码如下:

项目代码
github仓库:https://github.com/2012Netsky/CSharp_CPlusPlus_Dll

2、 C++程序

代码如下(示例):
export.h

/*
*  定义宏开关,标识是向DLL导出函数还是从DLL导入函数
*/

#ifndef EXPORT_H_
#define EXPORT_H_

#define  DLL_EXPORTS

#endif

C++DLL.h

/*****************************************************
* 封装DLL头文件
*****************************************************/

#ifndef C_DLL_H_
#define C_DLL_H_

#ifdef __cplusplus
extern "C"{
#endif

#define DLL_STD_CALL __stdcall						/* 1、函数参数由右向左入栈 2、函数调用结束后由被调用函数清除栈内数据 3、函数名字 */

#ifdef DLL_EXPORTS
#define DLL_STD_CAPI __declspec(dllexport)		
#else
#define DLL_STD_CAPI __declspec(dllimport)			/* 别的工程引用头文件,DLL_STD_CAPI代表从DLL导入函数 */
#endif

DLL_STD_CAPI int DLL_STD_CALL Sum(int ,int);

#ifdef __cplusplus
}
#endif

#endif

C++DLL.cpp

// C++DLL.cpp : 定义 DLL 应用程序的导出函数。

#include "export.h"
#include "C++DLL.h"


/* 定义导出函数 */
DLL_STD_CAPI int DLL_STD_CALL Sum(int a ,int b)
{
	return a + b;
}

3、 C#程序

代码如下(示例):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
//可以正常使用
namespace ConsoleTestDll
{
    class Program
    {
        /* 导入C++DLL */
        [DllImport("C++DLL.dll", EntryPoint = "Sum", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern int Sum(int a, int b);         /* 声明为外部函数 */
        
        static void Main(string[] args)
        {
            int ret = Program.Sum(3,4);
            Console.WriteLine(ret);
            Console.ReadLine();
        }
    }
}

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值