我一直在嘗試從Oculus Rift中讀取數據一段時間。我希望它能夠在Visual Basic中工作,但唯一可用的代碼在C++中工作。所以我製作了一個C++ DLL,用於從裂痕中讀取數據,並且我想在VB中使用它。問題是我不太清楚我在做什麼,所以如果你能記住我是一個真正的白人,那麼這很棒。從Visual Basic調用C++ DLL
我以前關於如何創建DLL此嘖:https://www.youtube.com/watch?v=XdSbp1A6eQc
這裏是C++代碼讀取數據斷裂痕:
#include <iostream>
#include "OVR_CAPI_D3D.h"
#include "Extras/OVR_Math.h"
using namespace std;
using namespace OVR;
int main()
{
ovrHmd HMD;
ovrGraphicsLuid luid;
ovr_Initialize(nullptr);
ovr_Create(&HMD, &luid);
ovrHmdDesc hmdDesc = ovr_GetHmdDesc(HMD);
float yaw, pitch, roll;
while (true)
{
double frameTime = ovr_GetPredictedDisplayTime(HMD, 0);
double sensorSampleTime = ovr_GetTimeInSeconds();
ovrTrackingState hmdState = ovr_GetTrackingState(HMD, frameTime, ovrTrue);
ovrPosef thePose = hmdState.HeadPose.ThePose;
Quatf(thePose.Orientation).GetYawPitchRoll(&yaw, &pitch, &roll);
cout << "yaw: " << RadToDegree(yaw) << ", pitch: " << RadToDegree(pitch) << ", roll: " << RadToDegree(roll) << endl;
}
ovr_Destroy(HMD);
ovr_Shutdown();
}
我提出另一C++程序和測試的DLL,並檢查完成。 我然後做了VB程序導入的DLL,但我不能讓它工作:
Imports System.Runtime.InteropServices
Imports System
Module Module1
Private Declare Sub getriftinfo Lib "RiftDLL.dll" Alias "getriftdata"()
Sub Main()
getriftinfo()
End Sub
End Module
當我運行的代碼,程序崩潰和控制檯消息顯示出來說: 未處理的異常系統.badimageformatexception一個試圖加載程序格式不正確
而且,我不太肯定把DLL
謝謝你們!那意義重大。
不是通過代碼聲明它,你是否嘗試在項目中添加它作爲參考,並將其添加爲導入以便引用它? –
你能告訴我如何?我都是耳朵。 – Zock77
這是否適用於C++ DLL? – Zock77