我在 C++ 中有以下实现(创建了相同的 DLL)
double *getData()
{
double *eyeTrackData = new double[10];
const unique_ptr<Fove::IFVRHeadset> headset{ Fove::GetFVRHeadset() };
CheckError(headset->Initialise(Fove::EFVR_ClientCapabilities::Gaze),
"Initialise");
Fove::SFVR_GazeVector leftGaze, rightGaze;
const Fove::EFVR_ErrorCode error = headset->GetGazeVectors(&leftGaze,
&rightGaze);
// Check for error
switch (error)
{
case Fove::EFVR_ErrorCode::None:
eyeTrackData[0] = (double)leftGaze.vector.x;
eyeTrackData[1] = (double)leftGaze.vector.y;
eyeTrackData[2] = (double)rightGaze.vector.x;
eyeTrackData[3] = (double)rightGaze.vector.y;
break;
default:
// Less common errors are simply logged with their numeric value
cerr << "Error #" << EnumToUnderlyingValue(error) << endl;
break;
}
return eyeTrackData;
}
我已经包括
extern "C"
{
__declspec(dllexport) double *getData();
}
在头文件中。
我尝试用 C-sharp 接收这个。
[DllImport("C:\\Users\\BME 320 - Section 1\\Documents\\Visual Studio 2015\\Projects\\EyeTrackDll\\x64\\Debug\\EyeTrackDll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr eyeData();
但我不知道如何在 buttonClick 事件中接收数组。
我很感激这方面的任何帮助。