我尝试将我自己的 c++ 插件与 Unity3D 项目集成。但它不起作用。于是我写了一些小代码来测试,发现了一些奇怪的问题,让我#$%#@$^@#$^#^
首先我通过代码创建一个小的 dll 项目
#include "stdafx.h"
#define EXPORT_API __declspec(dllexport)
extern "C"
{
EXPORT_API void testFloatPoint(float *mFloat)
{
for(int i = 0 ; i<13;i++)
{
*mFloat = (float)i;
mFloat++;
}
mFloat = mFloat-13;
}
}
然后我尝试通过以下代码在 unity3D c# 脚本中调用此 dll 文件:
using UnityEngine;
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Collections;
using System.IO;
public class TestDLL : MonoBehaviour
{
float[] pose_float;//
#region import c++ dll
[DllImport ("TestDLL2")]
public static extern void testFloatPoint ([In,Out] float[] pose_float);
#endregion
void Start ()
{
pose_float = new float[13];
testFloatPoint(pose_float);
print ("get pose_float data!!!");
for(int i=0;i<13;i++)
{
print(pose_float[i]);
}
}
}
但打印出来的味精都是零。这有点奇怪,因为在我得到结果之前是“0,1,2,3....12”。我无法弄清楚问题出在哪里。所以我试图从我的 unity3D 项目文件夹中删除 dll 文件。更奇怪的问题是,它仍然可以以全零输出结果运行。项目文件夹下没有TestDLL2文件,也没有dllnotfound问题。U有什么建议吗?困扰我一个星期左右,非常感谢!