我一直试图从Oculus Rift读取数据。我希望它在Visual Basic中工作,但唯一可用的代码在C ++中工作。所以我制作了一个从rift读取数据的C ++ DLL,我想在VB中使用它。问题是我不太清楚我在做什么,所以如果你能记住我是一个真正的菜鸟,那就太好了。
我使用了这个关于如何创建DLL的内容:https://www.youtube.com/watch?v=XdSbp1A6eQc
这是从rift读取数据的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
当我运行代码时,程序崩溃并显示一条控制台消息: 未处理的异常system.badimageformatexception尝试加载格式不正确的程序
另外,我不太确定把DLL放在哪里
谢谢你们!这意味着很多。
答案 0 :(得分:0)
您确定这两个程序都是针对32位还是64位。如果你混合使用32位和64位库,可能会产生这种错误。
我认为你的权利可能是在错误的位置。通常,您可以将其包含在bin中,然后在Visual Studio的项目中包含该引用。