在Unity中使用C#调用C++动态链接库(DLL)
1.创建一个c++的新项目,选这个动态链接库(DLL),一定要选这个,会省很多事
新建头文件
头文件代码
#pragma once
extern "C" _declspec(dllexport) int Sum(int a, int b);
class DllForUnity
{
public:
};
源文件内容,一个加法函数,来源于网上
源文件代码:
#include "DllForUnity.h"
#include "iostream"
using namespace std;
int Add(int a, int b)
{
if (a - (int)a != 0 || b - (int)b != 0) {
cout << "请输入整数" << endl;
return -1;
}
return a + b;
}
然后点击生成解决方案,如果会报这个#include”pch,h”,之类的错误解决方法
1.Debug选择x64
2.点击项目右键属性打开,将平台改成x64,预编译头改成不使用预编译头,这样就不会报这类的错误了
然后点击生成解决方案,生成之后下面就有了DLL文件的路径,找到这个路径就可以看到DLL文件
Unity相关操作
将DLL文件拷贝到Plugins文件夹下面,如果没有这个文件夹就自己创建一个,名字一样的,复制进去
新建一个测试脚本,引用命名空间using System.Runtime.InteropServices;
函数名一定要跟DLL里的函数名一样,不然会报错
代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
Sum_My(3, 4);
}
[DllImport("Dll.dll")]
extern static int Add(int a, int b);
public void Sum_My(int a, int b)
{
UnityEngine.Debug.Log("调用C++代码计算a + b的结果为" + Add(a, b));
}
}
将脚本挂载在空物体上
运行结果如下,这样就完成了如何调用了