Visual c++ 如何运行DLL项目
这是Oculus街景项目……我只是想理解和运行,但我做不到……请帮助我 //dllmain.cpp:定义DLL应用程序的入口点 包括“stdafx.h” BOOL APICENT DllMain(模块HMODULE, 德沃德·乌尔打电话的理由, LPVOID lpReserved ) { 开关(ul\u呼叫原因\u) { 案例DLL\u进程\u附加: 案例DLL\u线程\u连接: 案例DLL\u线程\u分离: 案例DLL\u进程\u分离: 打破 } 返回TRUE; } 包括“stdafx.h”Visual c++ 如何运行DLL项目,visual-c++,Visual C++,这是Oculus街景项目……我只是想理解和运行,但我做不到……请帮助我 //dllmain.cpp:定义DLL应用程序的入口点 包括“stdafx.h” BOOL APICENT DllMain(模块HMODULE, 德沃德·乌尔打电话的理由, LPVOID lpReserved ) { 开关(ul\u呼叫原因\u) { 案例DLL\u进程\u附加: 案例DLL\u线程\u连接: 案例DLL\u线程\u分离: 案例DLL\u进程\u分离: 打破 } 返回TRUE; } 包括“stdafx.h”
#包括“libovrwraper.h”
#包括
使用名称空间OVR;
//Ptr添加参考,自动清洁
bool-bInited=false;
Ptr管理器;
Ptr-pHMD;
Ptr传感器;
传感器融合;
libovrwraper_API int OVR_Init()
{
bInited=假;
System::Init(Log::ConfigureDefaultLog(LogMask_Regular));
if(System::IsInitialized())
{
int stage=-1;
而(++stage>-1&&!bInited)
{
开关(级)
{
案例0:
pManager=*设备管理器::创建();
如果(pManager==NULL)
返回bInited;
打破
案例1:
pHMD=*pManager->EnumerateDevices().CreateDevice();
如果(pHMD==NULL)
返回bInited;
打破
案例2:
pSensor=*pHMD->GetSensor();
if(pSensor==NULL)
返回bInited;
打破
违约:
bInited=真;
打破
};
}
}
pSensorFusion.附加传感器(pSensor);
返回(bInited?1:0);
}
libovrwraper_API void OVR_Exit()
{
如果(bInited)
{
系统::Destroy();
}
}
libovrwraper_API int OVR_QueryHMD(OVR_HMDInfo*refHmdInfo)
{
如果(!bInited)
{
返回0;
}
hmdinfosrc;
if(pHMD->GetDeviceInfo(&src))
{
refHmdInfo->HResolution=src.HResolution;
refHmdInfo->VResolution=src.VResolution;
refHmdInfo->HScreenSize=src.HScreenSize;
refHmdInfo->VScreenSize=src.VScreenSize;
refHmdInfo->vscreencecenter=src.vscreencecenter;
refHmdInfo->eyetoscreensistance=src.eyetoscreensistance;
refHmdInfo->LensSeparationDistance=src.LensSeparationDistance;
refHmdInfo->InterpupillaryDistance=src.InterpupillaryDistance;
refHmdInfo->extractionk[0]=src.extractionk[0];
refHmdInfo->extractionk[1]=src.extractionk[1];
refHmdInfo->extractionk[2]=src.extractionk[2];
refHmdInfo->extractionk[3]=src.extractionk[3];
refHmdInfo->DesktopX=src.DesktopX;
refHmdInfo->DesktopY=src.DesktopY;
memcpy(refHmdInfo->DisplayDeviceName,src.DisplayDeviceName,sizeof(refHmdInfo->DisplayDeviceName));
}
返回1;
}
LIBOVRWRAPPER_API int OVR_PeekYPL(浮动*偏航、浮动*俯仰、浮动*滚转)
{
如果(!bInited)
{
返回0;
}
Quatf hmdOrient=pSensorFusion.GetOrientation();
hmdOrient.geteurangles(偏航、俯仰、横滚);
返回1;
}
libovrRapper_API int OVR_Peek(浮点*w,浮点*x,浮点*y,浮点*z)
{
如果(!bInited)
{
返回0;
}
Quatf hmdOrient=pSensorFusion.GetOrientation();
*w=hmdOrient.w;
*x=hmdOrient.x;
*y=hmdOrient.y;
*z=hmdOrient.z;
//hmdOrient.geteurangles(偏航、俯仰、横滚);
返回1;
}
#ifdef Libovrrapper_导出
#如果已定义uu cplusplus
#定义libovrRapper\u API外部“C”\u declspec(dllexport)
#否则
#定义libovrRapper\u API\u declspec(dllexport)
#恩迪夫
#否则
#如果已定义uu cplusplus
#定义libovrRapper\u API外部“C”\u declspec(dllimport)
#否则
#定义libovrRapper\u API\u declspec(dllimport)
#恩迪夫
#恩迪夫
结构OVR_HMDInfo
{
无符号解;
未签署的决议;
浮子筛;
浮子筛;
浮子垂直中心;
浮眼筛;
浮动透镜分离距离;
浮动瞳孔间距;
浮动失真k[4];
int DesktopX;
int桌面;
char DisplayDeviceName[32];
};
libovrwraper_API int OVR_Init();
libovrwraper_API void OVR_Exit();
libovrwraper_API int OVR_QueryHMD(struct OVR_HMDInfo*refHmdInfo);
libovrwraper_API intovr_Peek(float*w,float*x,float*y,float*z);
Libovrrapper_API int OVR_PeekYPL(浮动*偏航、浮动*俯仰、浮动*滚转);
你的问题很难理解,因为它没有任何关于你尝试过什么、什么不起作用等的真实细节
看起来您正试图“运行”一个DLL,但这实际上是不可能的。DLL必须由另一个应用程序加载。因此,您将有一个某种类型的可执行文件加载此DLL,并调用其OVR_Init和OVR_Exit函数。这是Oculus SDK项目。当这个项目成功运行时,它会查看一个HMD…………但我无法成功。我想运行这种类型的程序,这给了我很多鼓励。提前感谢。谢谢您的热情回复。这是Oculus SDK项目。当这个项目成功运行时,它将显示一个HMD…………但是我不能成功。我想运行这种类型的程序,这给了我很多鼓励。高级感谢。如何使用windows 32位的Visual Studio Express 2012运行Oculus World演示编程
#include "libovrwrapper.h"
#include <OVR.h>
using namespace OVR;
// Ptr<> AddRef'ed, AutoCleaned
bool bInited = false;
Ptr<DeviceManager> pManager;
Ptr<HMDDevice> pHMD;
Ptr<SensorDevice> pSensor;
SensorFusion pSensorFusion;
LIBOVRWRAPPER_API int OVR_Init()
{
bInited = false;
System::Init(Log::ConfigureDefaultLog(LogMask_Regular));
if (System::IsInitialized())
{
int stage = -1;
while (++stage > -1 && !bInited)
{
switch (stage)
{
case 0:
pManager = *DeviceManager::Create();
if (pManager == NULL)
return bInited;
break;
case 1:
pHMD = *pManager->EnumerateDevices<HMDDevice>().CreateDevice();
if (pHMD == NULL)
return bInited;
break;
case 2:
pSensor = *pHMD->GetSensor();
if (pSensor == NULL)
return bInited;
break;
default:
bInited = true;
break;
};
}
}
pSensorFusion.AttachToSensor(pSensor);
return (bInited?1:0);
}
LIBOVRWRAPPER_API void OVR_Exit()
{
if (bInited)
{
System::Destroy();
}
}
LIBOVRWRAPPER_API int OVR_QueryHMD(OVR_HMDInfo* refHmdInfo)
{
if (!bInited)
{
return 0;
}
HMDInfo src;
if (pHMD->GetDeviceInfo(&src))
{
refHmdInfo->HResolution = src.HResolution;
refHmdInfo->VResolution = src.VResolution;
refHmdInfo->HScreenSize = src.HScreenSize;
refHmdInfo->VScreenSize = src.VScreenSize;
refHmdInfo->VScreenCenter = src.VScreenCenter;
refHmdInfo->EyeToScreenDistance = src.EyeToScreenDistance;
refHmdInfo->LensSeparationDistance = src.LensSeparationDistance;
refHmdInfo->InterpupillaryDistance = src.InterpupillaryDistance;
refHmdInfo->DistortionK[0] = src.DistortionK[0];
refHmdInfo->DistortionK[1] = src.DistortionK[1];
refHmdInfo->DistortionK[2] = src.DistortionK[2];
refHmdInfo->DistortionK[3] = src.DistortionK[3];
refHmdInfo->DesktopX = src.DesktopX;
refHmdInfo->DesktopY = src.DesktopY;
memcpy(refHmdInfo->DisplayDeviceName, src.DisplayDeviceName, sizeof(refHmdInfo->DisplayDeviceName));
}
return 1;
}
LIBOVRWRAPPER_API int OVR_PeekYPL(float* yaw, float* pitch, float* roll)
{
if (!bInited)
{
return 0;
}
Quatf hmdOrient = pSensorFusion.GetOrientation();
hmdOrient.GetEulerAngles<Axis_Y, Axis_X, Axis_Z>(yaw, pitch, roll);
return 1;
}
LIBOVRWRAPPER_API int OVR_Peek(float* w, float* x, float* y,float * z)
{
if (!bInited)
{
return 0;
}
Quatf hmdOrient = pSensorFusion.GetOrientation();
*w = hmdOrient.w;
*x = hmdOrient.x;
*y = hmdOrient.y;
*z = hmdOrient.z;
//hmdOrient.GetEulerAngles<Axis_Y, Axis_X, Axis_Z>(yaw, pitch, roll);
return 1;
}
#ifdef LIBOVRWRAPPER_EXPORTS
#if defined __cplusplus
#define LIBOVRWRAPPER_API extern "C" __declspec(dllexport)
#else
#define LIBOVRWRAPPER_API __declspec(dllexport)
#endif
#else
#if defined __cplusplus
#define LIBOVRWRAPPER_API extern "C" __declspec(dllimport)
#else
#define LIBOVRWRAPPER_API __declspec(dllimport)
#endif
#endif
struct OVR_HMDInfo
{
unsigned HResolution;
unsigned VResolution;
float HScreenSize;
float VScreenSize;
float VScreenCenter;
float EyeToScreenDistance;
float LensSeparationDistance;
float InterpupillaryDistance;
float DistortionK[4];
int DesktopX;
int DesktopY;
char DisplayDeviceName[32];
};
LIBOVRWRAPPER_API int OVR_Init();
LIBOVRWRAPPER_API void OVR_Exit();
LIBOVRWRAPPER_API int OVR_QueryHMD(struct OVR_HMDInfo* refHmdInfo);
LIBOVRWRAPPER_API int OVR_Peek(float* w, float* x, float* y,float * z);
LIBOVRWRAPPER_API int OVR_PeekYPL(float* yaw, float* pitch, float* roll);