gpt4 book ai didi

c++ - 从 Visual Basic 调用 C++ DLL

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:11 26 4
gpt4 key购买 nike

一段时间以来,我一直在尝试从 Oculus Rift 读取数据。我希望它在 Visual basic 中工作,但唯一可用的代码在 C++ 中工作。所以我制作了一个从裂缝中读取数据的C++ DLL,我想在VB中使用它。问题是我不太清楚我在用它做什么,所以如果你能记住我是一个真正的菜鸟,那就太好了。

关于如何创建 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

当我运行代码时,程序崩溃并显示一条控制台消息: 未处理的异常 system.badimageformatexception 试图加载格式不正确的程序

此外,我不太确定将 DLL 放在哪里

谢谢大家!这意味着很多。

最佳答案

您确定这两个程序都针对 32 位或 64 位吗?如果您混合使用 32 位和 64 位库,则可能会引发此类错误。

我想你是对的,dll 可能位于错误的位置。通常,您可以将其包含在您的 bin 中,然后在您的 visual studio 项目中包含该引用。

这个答案可能对您有帮助:https://social.msdn.microsoft.com/Forums/en-US/f228007d-35eb-4ab5-b541-c10ece3b980b/help-using-c-dll-functions-in-vbnet?forum=vblanguage .

关于c++ - 从 Visual Basic 调用 C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com