独自の 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週間くらいお邪魔します、ありがとうございます!