将 C 项目转换为库以在 QT 中使用

Convert a C project to Library to use in QT

我有一个生成可执行文件的 C 项目。我想将该项目转换为我想在我的 QT C++ 应用程序中使用的库。

我碰壁了。有人可以向我提供任何相关信息吗?

所以我一直在看https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application#Creating_a_static_library

我创建了一个 no-qt 项目进行编译,它生成了一个 .a 文件。 这是我的 .pro 文件

TEMPLATE = lib
CONFIG += staticlib
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
    libmnl/dhcp/dhcpclient.c \
    libmnl/dhcp/dhcpmsg.c \
    libmnl/dhcp/packet.c \
    libmnl/attr.c \
    libmnl/callback.c \
    libmnl/ifutils.c \
    libmnl/nlmsg.c \
    libmnl/socket.c \
    atc.c \
    atchannel.c \
    at_tok.c \
    device.c \
    GobiNetCM.c \
    mbim-cm.c \
    MPQMUX.c \
    qmap_bridge_mode.c \
    QMIThread.c \
    QmiWwanCM.c \
    udhcpc_netlink.c \
    util.c

HEADERS += \
    libmnl/dhcp/dhcp.h \
    libmnl/dhcp/dhcpmsg.h \
    libmnl/dhcp/packet.h \
    libmnl/ifutils.h \
    libmnl/libmnl.h \
    atchannel.h \
    at_tok.h \
    MPQMUX.h \
    QMIThread.h \
    util.h

DISTFILES +=


QMAKE_CFLAGS += -Wall #-s
QMAKE_LFLAGS += -lpthread -ldl -lrt

LIBS += -pthread

我的理解告诉我,我的 C 项目吐出一个可执行文件,而不是我希望它吐出一个库和一个头文件

然后我可以将它添加到我的 QT 项目中

这有帮助吗:

https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application

请注意,我在 Qt 项目中包含了 C++ 库,根本不需要做任何特殊的事情。我只是生成 libFOO.a,然后编辑我的 Qt 项目 .pro 文件以添加 -L 和 -lFOO。这是一个这样的项目的剪切和粘贴。

LIBS += -L../MyLib/lib -lMyLib

您可能还需要添加如下内容:

INCLUDEPATH += ../MyLib/src

注意这里没有 -I。