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

在c++工程和unity工程中调用vc 2019下创建的动态链接库dll,第1张

在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);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4750503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存