【问题标题】:Error when trying to build project with included Qt class library library尝试使用包含的 Qt 类库库构建项目时出错
【发布时间】:2019-05-19 04:43:32
【问题描述】:

我已经使用 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: 无法解析的外部符号“public: __thiscall PlayerCharacter::PlayerCharacter(class std::basic_string,class 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>完成构建项目“JanturiolGameServer.vcxproj”——失败。 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

如果我尝试通过 Qt creator 4. 9. 0 构建项目,我会收到此错误:

https://monosnap.com/file/f9XQ1s0VQpfx8e6PXYtkaNl2X409ra

这是.lib文件的路径:

https://monosnap.com/file/oeaH3vuXMIYQ7aLY3vcWd6qk0QqOOy

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    在您的项目文件中,您设置了 WIN64,但您的编译器输出状态为 Debug Win32。

    请参阅https://docs.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2019?view=vs-2019 上的“您尝试将 64 位库链接到 32 位代码,或将 32 位库链接到 64 位代码”作为可能的原因

    【讨论】:

    • 非常感谢!正是它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多