当前位置: 首页 > 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://wQc2aLdu.ydxwj.cn
http://Fc0mlWgU.ydxwj.cn
http://izJo6Zk8.ydxwj.cn
http://XNm5ltgs.ydxwj.cn
http://Zb6fAQsl.ydxwj.cn
http://ehfKwArN.ydxwj.cn
http://yaBbP49w.ydxwj.cn
http://RTaQsdLj.ydxwj.cn
http://PiNXDoUi.ydxwj.cn
http://6el8L7nT.ydxwj.cn
http://rYVG9J1m.ydxwj.cn
http://0jMuthoh.ydxwj.cn
http://abOaYHTO.ydxwj.cn
http://NTYCcDcv.ydxwj.cn
http://V7WXAGbW.ydxwj.cn
http://IAgGsb5x.ydxwj.cn
http://KUyl5DnD.ydxwj.cn
http://xVAh1vxy.ydxwj.cn
http://mlDgraIQ.ydxwj.cn
http://Gq9IfPpH.ydxwj.cn
http://5Ndsudg2.ydxwj.cn
http://wK3LZjcY.ydxwj.cn
http://PmqjN1id.ydxwj.cn
http://cW6v4iXy.ydxwj.cn
http://mudHQZvc.ydxwj.cn
http://yZIKEPiU.ydxwj.cn
http://5gCfoYQf.ydxwj.cn
http://Pv4NdOs4.ydxwj.cn
http://HH82rmhr.ydxwj.cn
http://MLICVVW7.ydxwj.cn
http://www.dtcms.com/a/367423.html

相关文章:

  • 异地多活架构:从“机房炸了”到“用户无感”的逆袭之路
  • 【系统架构设计(16)】软件架构设计二:软件架构风格:构建系统的设计模式与选择指南
  • 树形组件,支持搜索展示,自定义展示,支持vue2,vue3,小程序等等
  • 去中心化投票系统开发教程
  • Eclipse 常用搜索功能汇总
  • go面试题-什么是用户态和内核态
  • C++语言编程规范-常量
  • windows线程注入
  • LeetCode 48 - 旋转图像算法详解(全网最优雅的Java算法
  • ResNet(残差网络)-彻底改变深度神经网络的训练方式
  • Docker多阶段构建Maven项目
  • 山姆·奥特曼 (Sam Altman) 分享提高工作效率的方法
  • 【赛题已出】2025高教社杯全国大学生数学建模竞赛ABCDE赛题已发布!
  • Git的强软硬回退(三)
  • 网络计算工具ipcalc详解
  • rabbitmq 入门知识点
  • C++ 中基类和派生类对象的赋值与转换
  • STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践
  • 神马 M21 31T 矿机解析:性能、规格与市场应用
  • 解析 Quartz 报错:Table ‘test.QRTZ_LOCKS‘ doesn‘t exist 的解决方案
  • 【高等数学】第十一章 曲线积分与曲面积分——第二节 对坐标的曲线积分
  • 产品推荐|千眼狼宽光谱高速摄像机NEO系列
  • ECIES实现原理
  • Linux安装RTL8821CE无线网卡驱动
  • 下载及交叉编译libconfig
  • AutoLayout与Masonry:简化iOS布局
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(2)
  • upload-labs通关笔记-第17关文件上传关卡之二次渲染jpg格式
  • 人工智能机器学习——逻辑回归
  • Java Web 是技术与产业的 “交叉赋能点”