unity导入引用c++的dll

本文记录了在Unity开发中如何导入并使用自编译的C++ DLL。首先,创建C++ Win32 DLL项目,针对Unity 5.x及以上版本选择x64编译。为简化导出函数声明,可以使用`extern "C"`和`__stdcall`关键字,并通过DEF文件导出函数,避免`EntryPointNotFoundException`错误。生成DLL后,将其放入Unity的plugins/x64目录。最后,在C#中使用`DllImport`调用DLL函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做unity开发,需要引入自己写的c++dll,记录一下:

1.创建c++win32控制台应用程序程序,程序类型选择为dll,如果你的unity为5.x以上,就选用x64进行编译,生成你自己的dll

在创建dll工程中,记录一下自己遇到的一个问题吧,导出函数声明类似于 extern "C"  __declspec(dllexport) int DllTest(),由于我有很多这样的函数,所以每个这么写看起来繁琐,所以我可以声明成这样

extern "C" 

 

{

  int __stdcall DllTest();

  int 

### 如何在 Unity 2018 中正确导入和使用 C++ 编写的 DLL 文件 要在 Unity 2018 中成功导入并使用由 C++ 编写的功能性 DLL 文件,需遵循一系列特定的操作流程。以下是详细的说明: #### 1. 创建 C++ 动态库 (DLL) 创建一个标准的 C++ 动态链接库 (DLL),其中包含希望暴露给外部程序(如 Unity)使用的函数。这些函数通常通过 `extern "C"` 和 `__declspec(dllexport)` 进行导出[^3]。 ```cpp // MyLibrary.h #ifdef MYLIBRARY_EXPORTS #define MYLIBRARY_API __declspec(dllexport) #else #define MYLIBRARY_API __declspec(dllimport) #endif extern "C" { MYLIBRARY_API int Add(int a, int b); } ``` ```cpp // MyLibrary.cpp #include "MyLibrary.h" MYLIBRARY_API int Add(int a, int b) { return a + b; } ``` #### 2. 编译生成 DLL 文件 设置 Visual Studio 或其他支持工具来构建上述代码,并确保目标平台与 Unity 的运行环境一致(通常是 x86/x64 架构)。完成后会得到 `.dll` 文件。 #### 3. 将 DLL 放入 Unity 工程中 将生成好的 DLL 文件放置到 Unity 项目的 **Assets/Plugins/** 目录下。如果需要区分不同架构,则可以进一步细分至子文件夹,例如: - Windows 平台下的 x86 版本应放入 **Assets/Plugins/x86/** - 对于 x64 则是 **Assets/Plugins/x86_64/** 这样可以让 Unity 自动识别适合当前系统的插件版本[^4]。 #### 4. 使用 PInvoke 调用 DLL 函数 借助 C# 提供的 Platform Invocation Services (P/Invoke), 可以轻松调用已准备好的原生方法。下面是一个简单的例子展示如何从脚本层面访问之前定义过的加法运算功能: ```csharp using UnityEngine; public class Test : MonoBehaviour { void Start() { Sum_My(3, 4); } [DllImport("MyLibrary")] private static extern int Add(int a, int b); public void Sum_My(int a, int b) { Debug.Log($"调用C++代码计算a+b的结果为{Add(a,b)}"); } } ``` 注意这里 `[DllImport("MyLibrary")]` 行中的字符串参数应当匹配实际 dll 名称(不带扩展名),并且大小写敏感度取决于操作系统特性。 #### 5. 测试验证 最后一步是在编辑器模式或者打包后的应用内执行测试案例,确认预期行为正常运作无误之后即可投入正式开发阶段。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值