Unity3d调用C++ dll中的函数

一、生成dll

1.新建dll工程

  1. 不用管dllmain.cpp,添加自定义Helper.h和Helper.cpp

3.添加要在外部调用的方法

复制代码
//头文件
#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT int _stdcall Addition(int x, int y);
DLLEXPORT int _stdcall create_video_decoder(int codec_id, void **handle);

//源文件
DLLEXPORT int _stdcall Addition(int x, int y)
{
	return x + y;
}

DLLEXPORT int _stdcall create_video_decoder(int codec_id, void **handle)
{
    //...
}

4.配置x64或x86,编译,得到dll

二、Unity3d中调用

1.在Unity3d工程Assets建立Plugins文件夹,将dll及依赖dll都复制到该文件夹下

2.在代码中引入函数

注意:C#函数的名字可以与C++中的函数可以不一样。但EntryPoint中的名字必须与C++函数名一样。

复制代码
[DllImport("MyFFmpegHelper")]
public static extern int Addition(int x, int y);

[DllImport("MyFFmpegHelper", EntryPoint = "create_video_decoder", CallingConvention = CallingConvention.Cdecl)]
private static extern int CreateVideoDecoder(FFmpegVideoCodecId videoCodecId, out IntPtr handle);

3.设置x64或x86以及.net版本

相关推荐
_zhourui_h_18 小时前
Unity MyFramework: 框架中的那些非常实用的 GC 处理技巧
unity3d
用户8055336980321 小时前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
SmalBox1 天前
【节点】[Whirl节点]原理解析与实际应用
unity3d·游戏开发·图形学
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
SmalBox2 天前
【节点】[Truchet节点]原理解析与实际应用
unity3d·游戏开发·图形学
卷无止境2 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境2 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴3 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
_zhourui_h_3 天前
MyFramework:Unity GameScene 和 SceneProcedure 的划分准则
unity3d
SmalBox3 天前
【节点】[Tile节点]原理解析与实际应用
unity3d·游戏开发·图形学