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から何かアドバイスはありますか?1週間くらいお邪魔します、ありがとうございます!

4

0 に答える 0