2014-08-29 3 views
-1

Это мнение улица проект Oculus ..... просто я пытаюсь понять и работать, но я не мог сделать это ...... Пожалуйста, помогите мнекак запустить DLL Project

// DllMain .cpp: Определяет точку входа для приложения DLL.

включают "stdafx.h"

BOOL APIENTRY DllMain (HMODULE HMODULE, DWORD ul_reason_for_call, LPVOID lpReserved ) { переключатель (ul_reason_for_call) { случай DLL_PROCESS_ATTACH: случай DLL_THREAD_ATTACH: случай DLL_THREAD_DETACH : case DLL_PROCESS_DETACH: break; } return TRUE; }

включают «stdafx.h»

#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); 
+0

Это проект Oculus SDK. Когда этот проект выполняется успешно, он просматривает HMD ..........., но я не могу успешно. Я хочу запустить этот тип программы, который очень меня вдохновляет. Благодарю вас. –

ответ

0

Ваш вопрос очень трудно понять, так как он не имеет каких-либо реальных подробностей о том, что вы уже пробовали, что не работает, и т.д.

Похоже, вы пытаетесь «запустить» DLL, что на самом деле невозможно. DLL должна быть загружена другим приложением. Таким образом, у вас будет исполняемый файл, который загрузит эту DLL, и вызовет его функции OVR_Init и OVR_Exit.

+0

Благодарим вас за сердечный ответ. Это проект Oculus SDK. Когда этот проект будет работать успешно, он покажет HMD ..........., но я не смог бы успешно. Я хочу запустить этот тип программы, который очень меня вдохновляет. Благодарю вас. –

+0

Как запустить Oculus World Demo Программирование с помощью Visual Studio Express 2012 для Windows 32 бит –

Смежные вопросы