C#调用动态链接库DLL示例

前言

本文主要讲述C#实现调用非托管Dll中的函数。

步骤

第一步:打开Visual Studio,新建一个C#控制台应用

如下图示:

c-sharp-console-app.pngc-sharp-console-app.png

第二步:生成动态链接库Dll文件

右击解决方案,添加--新建项目--新建一个动态链接库项目,新建完后,右击项目--属性--C/C++ -- 预编译头--选择不使用编译头。如下图示:

c-sharp-dll-app.pngc-sharp-dll-app.png

在新建的NativeDll中新建头文件Native.h

Native.h文件内容:

#pragma once
// 定义一些宏
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN
#endif
#define CallingConvention _cdecl
// 判断用户是否有输入,从而定义区分使用dllimport还是dllexport
#ifdef DLL_IMPORT 
#define HEAD EXTERN __declspec(dllimport)
#else
#define  HEAD EXTERN __declspec(dllexport)
#endif
HEAD int CallingConvention Sum(int a, int b);

然后,新建一个C++文件,后缀以.c结尾

Native.c文件内容:

#include "Native.h" // 导入头部文件
#include "stdio.h"
HEAD int Add(int a, int b)
{
    return a + b;
}

然后,选中动态链接库项目,右键生成,此时就可以正常生成NativeDll.dll文件。

最终使用ViewDLL查看NativeDll.dll文件,如下图示:

viewdll-nativedll.pngviewdll-nativedll.png

第三步:在C#中声明并尝试调用dll方法

Program.cs文件内容:

using System;
using System.Runtime.InteropServices;

namespace ConsoleApp2
{
    class Program
    {
        [DllImport(@"C:\Users\whwtr\source\repos\ConsoleApp2\Debug\NativeDll.dll")]
        public static extern int Add(int a, int b);
        public static void Main(string[] args)
        {
            int sum = Add(23, 77);
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }
}

点击启动,在控制台能正常输出100,则表示调用dll方法成功。

(完)

C#
最后修改于:2023年04月15日 23:57

添加新评论