0

我尝试将我自己的 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有什么建议吗?困扰我一个星期左右,非常感谢!

4

0 回答 0