1厂家会提供几个文件:
文件【xxx.h】和【xxx.lib】和【xxx.dll】
xxx.h 文件包含 【函数方法名】 ,用于程序内调用
xxx.lib 用于添加依赖项
xxx.dll 动态链接库
2使用方法:
首先,把库函数文件都放在工作目录下。
库函数文件总共有三个文件:
ControlCAN.h、
ControlCAN.lib、
ControlCAN.dll
和一个文件夹 kerneldlls。
h文件操作:
在扩展名为.CPP 的文件中包含 ControlCAN.h 头文件。
如:#include “ControlCAN.h”
lib文件操作:
在工程的连接器设置中连接到 ControlCAN.lib 文件。
如:在 VC7 环境下,
在项目属性页里的配置属性→连接器→输入→附加依赖项中
添加 ControlCAN.lib
dll文件操作:
C#环境:
文件放在debug文件夹下。
3加载二次开发库函数:
[DllImport("winmm.dll")]
private static extern long mciSendString(string a,string b,uint c,IntPtr d);
[DllImport("KERNEL32.DLL", EntryPoint = "MoveFileW", SetLastError = True,
CharSet = CharSet.Unicode, ExactSpelling = True,
CallingConvention = CallingConvention.StdCall)]
public static extern bool MoveFile(String src, String dst);
我们常用到的dll文件User32.dll
和kernel32.dll
两个文件。
3、C#如何调用Win32 API函数?
C#语言也使用dll动态链接库,不过这些dll都是.NET版本的,具有“自描述性”,也就是自己肚子里都有哪些函数都已经写在自己的metadata里了,不用再附加一个.h文件来说明。
现在,我们已经找到了问题的关键点:如何用.NET平台上的C#语言来调用Win32平台上的dll文件。答案非常简单:使用DllImport特性。
搜索“Windows API Index”,一步步查找
using System;
using System.Runtime.InteropServices;//必须引入的【运行时.交互服务】(运行时的交互服务不就是“动态链接”吗?感谢Microsoft!)
class Program
{
[DllImport("User32.dll")]//制造一个DllImport类的实例,并把这个实例绑定在我们要使用的函数上!
public static extern int MessageBox(int h, string m, string c, int type);
static int Main()
{
MessageBox(0, "内容:Hello Win32 API", "标题:风格0", 0);
MessageBox(0, "内容:Hello Win32 API", "标题:风格1", 1);
MessageBox(0, "内容:Hello Win32 API", "标题:风格2", 2);
MessageBox(0, "内容:Hello Win32 API", "标题:风格3", 3);
MessageBox(0, "内容:Hello Win32 API", "标题:风格4", 4);
Console.ReadLine();
return 0;
}
}
https://star-302.blog.csdn.net/article/details/127259896
调用 Beep() API 来发出声音
BOOL Beep(
DWORD dwFreq, // 声音频率
DWORD dwDuration // 声音持续时间
);
[DllImport("kernel32.dll")]
public static extern bool Beep(int frequency, int duration);
using System;
using System.Runtime.InteropServices;
namespace Beep
{
class Class1
{
[DllImport("kernel32.dll")]
public static extern bool Beep(int frequency, int duration);
static void Main(string[] args)
{
Random random = new Random();// 随机数
for (int i = 0; i < 10000; i++)
{
Beep(random.Next(10000), 100);
}
Console.WriteLine("End");
}
}
}