我四处寻找试图解决此错误的帖子,但在每种情况下,我都已经在按照他们的建议进行操作。
我的编译输出:
main.obj:-1:错误:LNK2019:函数 _main 中引用的未解析外部符号“public:__thiscall KeyLogger::~KeyLogger(void)”(??1KeyLogger@@QAE@XZ)
main.obj:-1:错误:LNK2019:函数 _main 中引用的未解析外部符号“public:__thiscall KeyLogger::KeyLogger(void)”(??0KeyLogger@@QAE@XZ)
debug\AccipioKeyDemo.exe:-1: error: LNK1120: 2 unresolved externals
我知道这是说我定义了 KeyLogger 构造函数和析构函数但未实现,但实际上我已经实现了所有内容。
主文件
#include <QCoreApplication>
#include "keylogger.h"
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
KeyLogger k;
return a.exec();
}
键盘记录器.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