2012-03-10 3 views
0

Я делаю что-то, что нужно для получения HWID cmoputer, кросс-платформенного. Это в C++, и я использую Qt framework с Qt Creator. На самом деле я этого не нашел, поэтому я объясню. Я пытаюсь получить HWID в Windows, и он продолжает говорить, что у меня есть неразрешенные внешние символы, когда я пытаюсь его скомпилировать. Вот мой код для HWID вещи:HWID Windows - Использование Qt Framework

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

#ifdef _WIN32 | _WIN64//Windows 
#define _WIN32_WINNT 0x0400 
#include <Windows.h> 
#define get_hwid() windows_hwid() 

#elif defined __APPLE__ //Mac 
#define get_hwid() mac_hwid() 

#else //Unknown OS 
#define get_hwid() unknown_hwid() 

#endif 

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    QMessageBox::about(this, "About", get_hwid()); 
} 

QString MainWindow::windows_hwid() 
{ 
    HW_PROFILE_INFO hwProfInfo; 
    if(GetCurrentHwProfile(&hwProfInfo)) 
    { 
     return "we got it."; 
    } 
    return "couldn't get it"; 
} 

QString MainWindow::mac_hwid() 
{ 
    QProcess proc; 

    QStringList args; 
    args << "-c" << "ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { print $3; }'"; 
    proc.start("/bin/bash", args); 
    proc.waitForFinished(); 

    return proc.readAll(); 
} 

QString MainWindow::unknown_hwid() 
{ 
    return "hello unknown person!"; 
} 

Это бросает эти ошибки:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol _imp[email protected] referenced in function "public: class QString __thiscall MainWindow::windows_hwid(void)" ([email protected]@@[email protected]@XZ)

и

debug\MCBruter.exe:-1: error: LNK1120: 1 unresolved externals

Я 99% уверен, что нижняя вызывается мой первый один, поэтому я просто проигнорировал бы это. Я понятия не имею, что делать ... Mac работает отлично, только Windows один дает мне проблемы. Спасибо, Хетелек.

+0

Вы добавили следующие библиотека окон: Advapi32.lib? – akhisp

ответ

1

У вас есть ошибка компоновщика, вызванная тем, что вы включили соответствующий файл include, но вы не связали свои объектные файлы с правильной библиотекой импорта. Добавьте Advapi32.lib в библиотеки, чтобы связать их, и ошибка исчезнет.

Кстати, правильная библиотека линковать для конкретного API всегда указывается в документации в MSDN: если вы посмотрите на page of GetCurrentHwProfile вы найдете:

Header: Winbase.h (include Windows.h)

Library: Advapi32.lib

DLL: Advapi32.dll

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