最近项目需要编译C++的DLL并在unity中调用,所以简单整理了一下编译C++的步骤
如何把C++编译为DLL并调用?
首先通过VS创建一个空的C++项目,我用的是VS2017
在右边添加一个源文件,命名为test.cpp
定义一个关键字 ***这个名字可以自己定义 extern "C" __declspec(dllexport),他告诉这段代码是可以在dll中被其他调用的,如果你不想要被外部访问的方法就就不加 “__DllExport”,然后我就在里面写了一个简单的相加的方法。
#define _DllExport extern "C" __declspec(dllexport)
选择64的架构,并进行“生成-生成解决方案”
编译跑成功了,可以看到生成了一个DLL,找到这个DLL,并把DLL复制到Unity的Plugins文件夹。
新建一个test.cs的脚本,在DllImport引入Dll的名字,方法名一定要和C++的里面一样,把脚本挂在场景里,可以看到运行结果与预期一样。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class test : MonoBehaviour {
[DllImport("Project5")]
static extern int Sum(int a, int b);
private void Start()
{
var t = Sum(5, 6);
Debug.Log(t);
}
// Update is called once per frame
void Update () {
}
}