C ++: некоторые ошибки о const char * и printf

0

Я нашел этот код для чтения данных с моего периферийного устройства 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* но я не могу исправить вторую ошибку.

  • 0
    Ваш код был с двойным интервалом и без отступов, что делало его очень трудным для чтения. (Возможно, это был артефакт того, как вы скопировали его в веб-форму.) Я исправил это для вас.
Теги:
dll

1 ответ

1

Первая ошибка заключается в том, что вы компилируете с UNICODE, и LoadLibrary ожидает широкую строку. Используйте префикс L, чтобы указать широкий литерал:

LoadLibrary(L"iweardrv.dll");

Вторая ошибка связана с отсутствием #include. Вам нужно включить stdio.h для определения printf:

#include <stdio.h>

Для C++ было бы более обычным использовать std :: cout, а не printf.

  • 0
    Спасибо за ответ. Я включил студию, но теперь она возвращает: Ошибка 1 Ошибка C1083: Невозможно открыть предварительно скомпилированный заголовочный файл: «Debug \ file.pch»: Нет такого файла или каталога
  • 0
    Я думаю, что я ответил на вопрос, который вы задали. Я бы так быстро для этого не использовал предварительно скомпилированные заголовки и не использовал бы stdafx.h.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню