【Unity知识分享】Unity接入dll调用Window系统接口
1、初始化项目内容
2.1 使用VS创建C++动态链接库项目
2.2 删除创建的初始文件pch.h和pch.cpp
2.3 修改文件dllmain.cpp
2.4 在项目上右键点击属性,设置配置为全部,再设置预编译头为不使用预编译头
2.5 项目右键点击生成,检测项目是否可以成功编译
2、创建功能脚本并实现具体功能,打包dll包
2.1 创建CppFunaction.h和CppFunaction.cpp脚本
2.2 编辑脚本CppFunaction.h和CppFunaction.cpp内容如下
CppFunaction.h
#pragma once#ifdef MYNATIVE_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif // MYNATIVE_EXPORTSextern "C" {MY_API void ShowMessageBox(const char* text, const char* caption);
}
CppFunaction.cpp
#include "CppFunaction.h"
#include <Windows.h>extern "C" {MY_API void ShowMessageBox(const char* text, const char* caption){MessageBoxA(NULL, text, caption, MB_OK | MB_ICONEXCLAMATION);}
}
2.3 添加宏MYNATIVE_EXPORTS,右键点击属性再点击预处理器,Debug和Release需要分别设置
2.4 鼠标移动项目右键,点击生成
2.5 找到打包的dll包,找到项目所在位置../x64/Release,dll文件名与项目名一致
3、Unity中进行使用操作
3.1 创建Plugins文件夹,将dll包复制到该文件夹下面
3.2 将dll设置为PC的x64
3.3 创建脚本MessageBosTest,对dll进行使用,代码如下
[DllImport("UnityDllTest")] 中的名称使用自己的dll名称
private static extern void ShowMessageBox(string text, string title); 格式需要和dll中的格式保持一致
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;public class MessageBosTest : MonoBehaviour
{[DllImport("UnityDllTest")]private static extern void ShowMessageBox(string text, string title);private void Start(){ShowMessageBox("Hellow Wrold", "Hellow Wrorld");}
}