0

このエラーを解決しようとする投稿を探しましたが、いずれの場合も、彼らが提案したことをすでに実行しています。

私のコンパイル出力:

main.obj:-1: エラー: LNK2019: 未解決の外部シンボル "public: __thiscall KeyLogger::~KeyLogger(void)" (??1KeyLogger@@QAE@XZ) が関数 _main で参照されています

main.obj:-1: エラー: LNK2019: 未解決の外部シンボル "public: __thiscall KeyLogger::KeyLogger(void)" (??0KeyLogger@@QAE@XZ) が関数 _main で参照されています

debug\AccipioKeyDemo.exe:-1: エラー: LNK1120: 2 つの未解決の外部

これは、KeyLogger コンストラクタとデストラクタが定義されているが実装されていないということですが、実際にはすべてが実装されています。

main.cpp

#include <QCoreApplication>
#include "keylogger.h"

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    KeyLogger k;

    return a.exec();
}

keylogger.h

#ifndef KEYLOGGER_H
#define KEYLOGGER_H

#include <Windows.h>

class KeyLogger {

public:
    KeyLogger();
    ~KeyLogger();

    void start();
    void stop();

private:
    HHOOK hook;

    LRESULT CALLBACK intercept(int code, WPARAM wparam, LPARAM lparam);
};

#endif // KEYLOGGER_H

キーロガー.cpp

#include "keylogger.h"
#include <QDebug>

KeyLogger::KeyLogger() : hook(NULL) {
    hook = SetWindowsHookEx(WH_KEYBOARD_LL, intercept, NULL,0);

    if (hook == NULL) {
        qDebug() << "HOOK FAILED";
    } else {
        qDebug() << "HOOK SUCCESS";
    }
}

KeyLogger::~KeyLogger() {

}

void KeyLogger::start() {
    qDebug() << "start";
}

void KeyLogger::stop() {
    qDebug() << "stop";
}

LRESULT CALLBACK KeyLogger::intercept(int code, WPARAM wparam, LPARAM lparam) {
    qDebug() << "Key Pressed";
    return CallNextHookEx(hook, code, wparam, lparam);
}

QT Pro 構成

#-------------------------------------------------
#
# Project created by QtCreator 2013-10-10T19:58:51
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = AccipioKeyDemo
CONFIG   += console
CONFIG   -= app_bundle

LIBS += user32.lib

TEMPLATE = app

SOURCES += main.cpp \
    keylogger.cpp

HEADERS += \
    keylogger.h
4

2 に答える 2

0

リンカがコンストラクタとデストラクタを含む obj ファイルを見つけられないというリンケージ エラーが発生しています。これは、keylogger.cpp がコンパイルされていないか、リンカが obj ファイルを見つけられないことを意味します。プロジェクトの設定を確認してください。

于 2013-10-11T03:32:24.120 に答える