当前位置: 首页 > news >正文

【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");}
}

3.4 将脚本拖拽到场景任一物体上,运行即得到想要的Window弹窗

http://www.xdnf.cn/news/1459045.html

相关文章:

  • 无限时长视频生成新突破!复旦联合微软、腾讯混元推出StableAvatar,仅需1张照片+1段音频实现真人说话视频
  • hutool的EnumUtil工具类实践【持续更新】
  • 揭秘23种设计模式的艺术与技巧之行为型
  • 美联储计划召开稳定币和代币化创新会议
  • 大数据框架Doris全面解析
  • 期权平仓后权利金去哪了?
  • 基于STM32的智能家居语音控制系统设计
  • Pycharm终端pip install的包都在C:\Users\\AppData\Roaming\Python\解决办法
  • 手写Spring框架
  • 前端跨域终极指南:3 种优雅解决方案 + 可运行 Demo
  • 解密注意力机制:为何它能在Transformer中实现高效并行计算?
  • STM32G4 速度环开环,电流环闭环 IF模式建模
  • 如何在Linux上部署1Panel面板并远程访问内网Web端管理界面
  • Kafka 开启 SASL_PLAINTEXT 双监听器认证(内网/外网)
  • 如何减少文档冗余和重复劳动
  • vite_react 插件 find_code 最终版本
  • MVCC是如何工作的?
  • bash自带的切片操作
  • 解锁“桐果云”的全链路能力矩阵,技术人必看的企业级数据应用方案
  • 阿里云轻量应用服务器部署WordPress与配置SSL 证书
  • 英飞凌ASIL-D级无刷电机驱动芯片TLE9189守护汽车安全
  • 第三方网站测试:WEB安全测试中DOM型XSS漏洞的检测
  • [Windows] PDF工具箱 PDF24 Creator 11.28.0
  • 为什么ApiFox的分页查询的返回Vo的数据没有全部展示? 只展示了返回有数据的?没有数据的为什么不展示?
  • N个代码片段之封装继承与多态
  • Docker(①安装)
  • 视频小浮窗Pip的实现
  • 【RNN-LSTM-GRU】第四篇 GRU门控循环单元:LSTM的高效替代者与实战指南
  • 力扣14:最长公共前缀
  • 【系统架构设计(14)】项目管理下:软件质量与配置管理:构建可靠软件的基础保障