c++ - 尝试使用包含的 Qt 类库库构建项目时出错
问题描述
我已经使用 Qt VS Tools for Visual Studio 2019 创建了 Qt 类库。我将这个库包含到我也使用 Qt VS 工具制作的 Qt 项目中,但现在我的项目无法构建。
那是我项目的 .pro 文件:
# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Tools.
# ------------------------------------------------------
TEMPLATE = app
TARGET = JanturiolGameServer
DESTDIR = ./Win32/Debug
QT += core network gui widgets networkauth
CONFIG += debug
DEFINES += _UNICODE _ENABLE_EXTENDED_ALIGNED_STORAGE WIN64 QT_DLL QT_NETWORK_LIB QT_NETWORKAUTH_LIB QT_WIDGETS_LIB
INCLUDEPATH += ../../JanturiolLib \
./GeneratedFiles \
. \
./GeneratedFiles/$(ConfigurationName)
LIBS += -L"../../JanturiolLib"
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/$(ConfigurationName)
OBJECTS_DIR += debug
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(JanturiolGameServer.pri)
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../JanturiolLib/Win32/release/ -lJanturiolLib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../JanturiolLib/Win32/debug/ -lJanturiolLib
else:unix: LIBS += -L$$PWD/../JanturiolLib/Win32/ -lJanturiolLib
INCLUDEPATH += $$PWD/../JanturiolLib
DEPENDPATH += $$PWD/../JanturiolLib
那是我图书馆的 .pro 文件:
# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Tools.
# ------------------------------------------------------
TEMPLATE = lib
TARGET = JanturiolLib
DESTDIR = ./Win32/Release
QT += core xml network gui uitools widgets networkauth
CONFIG += release
DEFINES += _UNICODE _ENABLE_EXTENDED_ALIGNED_STORAGE WIN64 QT_DLL QT_NETWORK_LIB QT_NETWORKAUTH_LIB QT_UITOOLS_LIB QT_WIDGETS_LIB QT_XML_LIB JANTURIOLLIB_LIB
INCLUDEPATH += ./GeneratedFiles \
. \
./GeneratedFiles/$(ConfigurationName)
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/$(ConfigurationName)
OBJECTS_DIR += release
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
include(JanturiolLib.pri)
那就是 PlayerChracter.h:
#pragma once
#include "BaseCharacter.h"
#include <string>
enum CharacterClass{warrior, mage, ranger};
//position
struct Pos
{
int xPos;
int yPos;
};
class PlayerCharacter : public BaseCharacter
{
public:
PlayerCharacter(std::string charName);
virtual ~PlayerCharacter();
protected:
std::string name;
Pos position;
};
那就是 PlayerChracter.cpp:
#include "PlayerCharacter.h"
PlayerCharacter::PlayerCharacter(std::string charName)
{
name = charName;
position.xPos = 0;
position.yPos = 0;
}
PlayerCharacter::~PlayerCharacter()
{
}
如果我尝试通过 Visual Studio 构建项目,则会收到此错误:
1>----- 构建开始:项目:JanturiolGameServer,配置:调试 Win32 ------ 1>JanturiolGameServer.cpp 1>JanturiolGameServer.obj:错误 LNK2019:未解析的外部符号“公共:__thiscall PlayerCharacter::PlayerCharacter (类 std::basic_string,类 std::allocator >)" (??0PlayerCharacter@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@ @@Z) 在函数“private: void __thiscall JanturiolGameServer::ProcessDatagram(class QByteArray &)”中引用 (?ProcessDatagram@JanturiolGameServer@@AAEXAAVQByteArray@@@Z) 1>C:\Users\GKR\source\repos\JanturiolGameServer\ Win32\Debug\JanturiolGameServer.exe : 致命错误 LNK1120: 1 unresolved externals 1>Done building project "JanturiolGameServer.vcxproj" -- 失败。========== 构建:0 成功,1 失败,0 最新,
如果我尝试通过 Qt creator 4. 9. 0 构建项目,我会收到此错误:
https://monosnap.com/file/f9XQ1s0VQpfx8e6PXYtkaNl2X409ra
那是 .lib 文件的路径:
解决方案
在您的项目文件中,您已设置 WIN64,但您的编译器输出状态为 Debug Win32。
请参阅https://docs.microsoft.com/en-us/cpp/error-messages上的“您尝试将 64 位库链接到 32 位代码,或将 32 位库链接到 64 位代码”作为可能的原因/tool-errors/linker-tools-error-lnk2019?view=vs-2019
推荐阅读
- mysql - 如何使用带日期的名称分组显示记录?
- javascript - 如何根据条件合并对象的数组属性?
- php - 将 PHP 代码从 mysql 移动到 ms sql server
- apache-spark - 通过在 Livy 上提交批量 POST 方法并跟踪作业,使用 Airflow 提交 Spark 作业
- c - C 中 exit() 的单元测试
- javascript - 使特定键的 onkeydown 事件仅发生一次
- java - 如何预测文本视图中可以容纳的字符总数?
- intellij-idea - 在 intellij protractor 中评估表达式 - 不在浏览器上执行任何任务。承诺相关?
- gensim - 存储在similarities.SparseMatrixSimilarity().index 中的内容
- kubernetes - Kubernetes 阻止 exec 进入 Pod?