IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 在c++工程和unity工程中调用vc 2019下创建的动态链接库dll -> 正文阅读

[游戏开发]在c++工程和unity工程中调用vc 2019下创建的动态链接库dll

一、在c++工程中调用vc 2019下创建的动态链接库dll。

首先在VC2019下创建动态链接库项目。这个步骤可以参考这位大神博主的步骤。
https://blog.csdn.net/qq_30139555/article/details/103621955
然后要注意的事项有以下几点,我说明一下。

1、动态链接库按照上述链接创建好后,最后一步编译要点击上方菜单中的 “生成” 里的 “生成解决方案” 。
在这里插入图片描述

2、注意动态链接库编译的环境和调用动态链接库的环境要一致
因为是在新建的c++项目中调用动态链接库,所以这里项目的环境要一样,也就是动态链接库的环境和调用动态链接库项目的环境要一致。比如下方的我动态链接库的编译环境是x86的,那么调用它的项目环境也要是x86的!!一定要一致!!!!不然会报expected x64 architecture, but was x86 architecture. You must recompile your plugin for x64 architecture.翻译过来就是 “预期是x64架构,但却是x86架构。你必须为x64架构重新编译你的插件。”然后你就需要重新再走一遍操作了。在这里插入图片描述
3、如果修改了动态链接库中的函数功能,再重新编译,然后在c++工程中调用会报错或者说无法调用成功。
解决办法:我目前的理解是需要先将之前添加到 “c++调用工程“ 里的对应文件都先删除再重新添加进来。如果还没用,重走一遍流程吧哈哈哈,刚试验完还不太熟练。

二、在unity中调用c++创建的动态链接库dll

1、首先创建好动态链接库,上面的链接中详细讲解了如何创建。但是要注意编译的时候要选择环境x64的来编译,因为我的unity中调用的环境默认是x64位的,所以为了能调用,必须让其环境一致。
下面这个是我的动态链接库编译环境。在这里插入图片描述
2、编译成功后,我们创建一个Unity工程,然后再把编译生成的dll文件拖到你的unity工程的Assert的Plugins(如果没有这个文件夹,需要手动新建)。这里我是需要手动创建的。然后将我编译好的dll文件加进来。
在这里插入图片描述

3、手动创建一个cs文件。在里面编写代码调用动态链接库。再将这个cs文件挂载到Main Camera上。然后在unity里运行,打印区域不报错并显示预期的函数结果说明调用成功啦!我在测试的时候显示了环境不一致和无法找到dll库,那么需要在相同环境下重新编译动态链接库,就没问题啦!

using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;

public class testunitydll : MonoBehaviour
{

[DllImport("TestUnityDll")]                        //这里的dll文件名根据自己的修改
private static extern int add(int a, int b);  //这里是我封装的方法。根据自己的修改
int i = add(3, 5);
void Start()
{
    print(i);
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:30:04  更:2021-10-26 12:30:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:46:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码