gpt4 book ai didi

c++ - windows – Qt创建和使用自制静态库

转载 作者:行者123 更新时间:2023-11-30 03:30:17 24 4
gpt4 key购买 nike

有几个问题看起来很相似,但没有什么能真正帮助我解决问题。我想在一个项目中创建一个静态库并在同一个项目中使用它,但是出现链接错误。

Qt Ticket QTBUG-45706 https://bugreports.qt.io/browse/QTBUG-45706 附上了一个很好的例子,非常符合我的条件。 .在一个简单的解释中,我们有一个应用程序应该使用一些自制的库。只需修改一些内容即可看到我的问题。

应用程序 -> main.cpp

#include <QCoreApplication>
#include <lib.h>

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

Lib l1;

return a.exec();
}

lib.pro

CONFIG += staticlib

如果你现在编译项目,你会看到下面的错误

main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl Lib2::Lib2(void)" (__imp_??0Lib2@@QEAA@XZ) referenced in function main

使用基于Qt 5.6.1的Qt Creator 4.0.3,qmake with mscv2013

需要什么才能让它发挥作用?

澄清:

项目结构如下:

subdirs_test.pro (subdir project)
\- app (app project, includes lib and lib2)
\-- app.pro
\-- main.cpp
\- lib (static library)
\-- lib.pro
\-- lib.h
\-- lib_global.h
\-- lib.cpp
\- lib2 (static library)
\-- lib2.pro
\-- lib2.h
\-- lib2_global.h
\-- lib2.cpp

'app' 项目应该使用 lib 和 lib2 中的类,它们是静态库。

按照建议,使用“添加库...”不会改变任何事情。在我的例子中,将生成此代码。

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../lib/release/ -llib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../lib/debug/ -llib
else:unix: LIBS += -L$$OUT_PWD/../lib/ -llib

INCLUDEPATH += $$PWD/../lib
DEPENDPATH += $$PWD/../lib

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../lib/release/liblib.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../lib/debug/liblib.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../lib/release/lib.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../lib/debug/lib.lib
else:unix: PRE_TARGETDEPS += $$OUT_PWD/../lib/liblib.a

最佳答案

您可以使用 QtCreators Subdirs 项目。以下是如何使用 QtCreator 实现这一目标的详 segmentation 步说明。

  • New Project 向导菜单中选择 Subdirs Project

Subdirs Project

  • 通过使用右键单击已创建的子目录项目来添加子项目鼠标按钮并选择 New Subproject...

New Subproject

  • 按照向导,您应该拥有一个 GUI 或控制台子项目,并且图书馆子项目。然后单击要链接的子项目使用鼠标右键单击您的库子项目并选择 Add
    图书馆...

Add Library

  • 在对话框中选择Internal library,系统会提示您选择您要添加的库。

Internal library

  • 确保在 gui/console 之前包含你的库子项目作为 subdir 项目的子项目将无法构建。

    模板 = 子目录

    子目录 +=\ 图书馆项目\ 核心项目

关于c++ - windows – Qt创建和使用自制静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com