c++ - qt Creator qt5.1 vs2010使用静态库时链接器错误

标签 c++ c visual-studio-2010 qt5

当我尝试在 qt 5.1 的 qt 创建器中使用使用 vs2010 编译的静态库时,我遇到了问题。 我使用的是qt5.1。这是用 vs2010 编译器编译的。

我的简单库的源代码如下所示:

Lib_Test.h

#pragma once
#include <iostream>

class Lib_Test
{
  public:
    Lib_Test(void);
    ~Lib_Test(void);

    void HelloTest();
};

Lib_Test.cpp

#include "Lib_Test.h"

Lib_Test::Lib_Test(void)
{
}

Lib_Test::~Lib_Test(void)
{
}

void Lib_Test::HelloTest()
{
  std::cout << "Hello World!";
}

这两个文件被编译到我的“Lib_Test.lib”中。我将lib和头文件复制到“C:/Qt/”以简化库调用。 我的 qt 项目文件(用于 C++ 控制台应用程序):

QT       += core
QT       -= gui

TARGET = Lib_Test_Qt
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += C:/Qt
DEPENDPATH += C:/Qt

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -lLIB_Test

最后是main.cpp

#include <QCoreApplication>
#include <Lib_Test.h>

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

      Lib_Test *lb = new Lib_Test();
      lb->HelloTest();

      return a.exec();
}

当我尝试在 Qt Creator 中构建项目时,收到以下错误消息

main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: void __thiscall Lib_Test::HelloTest(void)" (?HelloTest@Lib_Test@@QAEXXZ) referenced in function _main
main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: __thiscall Lib_Test::Lib_Test(void)" (??0Lib_Test@@QAE@XZ) referenced in function _main
debug\Lib_Test_Qt.exe:-1: Fehler:LNK1120: 2 unresolved externals

当我将 HelloTest 方法声明为静态方法并尝试在不创建 Lib_Test 实例的情况下调用它时,我收到类似的错误消息

main.obj:-1: Fehler:LNK2019: unresolved external symbol "public: static void __cdecl Lib_Test::HelloTest(void)" (?HelloTest@Lib_Test@@SAXXZ) referenced in function _main
debug\Lib_Test_Qt.exe:-1: Fehler:LNK1120: 1 unresolved externals

我错过了什么?有人可以帮忙吗?现在真的很令人沮丧:/.

编辑:

我在 msvs2010 控制台中尝试了 DUMPBIN/SYMBOLS Lib_Test.lib ,我得到的是:

Microsoft (R) COSS/PE Dumper Version 10.00.40210.01
Copytight (C) Microsoft Corporation. All right reserved


Dump of file Lib_Test.lib

File Type: LIBRARY

这是否意味着我的图书馆是空的? :/

最佳答案

在您的 qmake 文件中,更改 win32:CONFIG(发布、调试|发布): LIBS += -C:/Qt/-lLib_Test win32:CONFIG(发布、调试|发布): PRE_TARGETDEPS += C:/Qt/Lib_Test.lib

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -lLib_Test

或者

win32:CONFIG(release, debug|release): LIBS += -LC:/Qt/
win32:CONFIG(release, debug|release): LIBS += -l_Test

我认为其中之一应该有效。并且不要忘记转到“构建”菜单,然后运行 ​​qmake。

关于c++ - qt Creator qt5.1 vs2010使用静态库时链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968156/

相关文章:

c++ - 链表的复制版本溢出

c++ - 我可以动态链接 linux 的二进制构建以使用 .Net 和 Mono

c++ - 关于在何处在线学习 C 以准备学习 Objective-C 的任何建议

c++ - 如何在自定义容器中支持范围适配器?

c - 单片机上的uart软件阅读——代码理解

c++ - 为什么 electric fence/Valgrind 无法捕获此缓冲区溢出问题?

c# - VS 2010 调试 - 可视化工具在哪里

asp.net - 如何使用msbuild发布网页?

c - Mosquitto 发布者未发布 C 中的整数

mysql - 解决多基表不支持动态SQL生成