C#调用动态链接库DLL示例
前言
本文主要讲述C#实现调用非托管Dll中的函数。
步骤
第一步:打开Visual Studio,新建一个C#控制台应用
如下图示:
第二步:生成动态链接库Dll文件
右击解决方案,添加--新建项目--新建一个动态链接库项目,新建完后,右击项目--属性--C/C++ -- 预编译头--选择不使用编译头。如下图示:
在新建的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文件,如下图示:
第三步:在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方法成功。
(完)