Visual c++ 如何运行DLL项目

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”

这是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);