Я нашел этот код для чтения данных с моего периферийного устройства USB:
#include "stdafx.h"
#define IWEARDRV_EXPLICIT
#include <windows.h>
#include <iweardrv.h>
int _tmain(int argc, _TCHAR* argv[])
{
// Load functions dynamically (in case they don't have a VR920)
HINSTANCE iweardll = LoadLibraryA("iweardrv.dll");
if (!iweardll) {
printf("VR920 drivers are not installed, you probably don't have a VR920.");
return 2;
}
IWROpenTracker = (PIWROPENTRACKER) GetProcAddress(iweardll, "IWROpenTracker");
IWRCloseTracker = (PIWRCLOSETRACKER) GetProcAddress(iweardll, "IWRCloseTracker");
IWRZeroSet = (PIWRZEROSET) GetProcAddress(iweardll, "IWRZeroSet");
IWRGetTracking = (PIWRGETTRACKING) GetProcAddress(iweardll, "IWRGetTracking");
IWRGetVersion = (PIWRGETVERSION) GetProcAddress(iweardll, "IWRGetVersion");
// Try to connect to the VR920 tracker
if (IWROpenTracker()) {
printf("VR920 is not connected.");
return 1;
}
// Read 20 samples
for (int i=1; i<=20; i++) {
LONG y, p, r;
double yaw, pitch, roll;
if (!IWRGetTracking(&y,&p,&r)) {
yaw = y*(180.0/32768.0);
pitch = p*(180.0/32768.0);
roll = r*(180.0/32768.0);
printf("Yaw=%lf degrees, Pitch=%lf degrees, Roll=%lf degrees", yaw, pitch, roll);
} else {
printf("Unable to read tracking.");
}
Sleep(500);
}
// Tidy up
IWRCloseTracker();
FreeLibrary(iweardll);
return 0;
}
Где я установил дополнительный каталог include для include file iweardrv.h
. Он возвращает мне эти ошибки:
IntelliSense: argument of type "const char *" is incompatible with parameter of type "LPCWSTR"
IntelliSense: identifier "printf" is undefined
Как избежать ошибок? Первая ошибка относится к аргументу LoadLibrary
"iweardrv.dll"
(динамическая библиотека, связанная с iweardrv.h
), а вторая ошибка относится ко всем линиям вызова printf
.
EDIT: я исправил первую ошибку, используя LoadLibraryA()
потому что она принимает const char*
но я не могу исправить вторую ошибку.
Первая ошибка заключается в том, что вы компилируете с UNICODE, и LoadLibrary ожидает широкую строку. Используйте префикс L, чтобы указать широкий литерал:
LoadLibrary(L"iweardrv.dll");
Вторая ошибка связана с отсутствием #include. Вам нужно включить stdio.h для определения printf:
#include <stdio.h>
Для C++ было бы более обычным использовать std :: cout, а не printf.