Я пытаюсь создать разделяемую (динамическую c) библиотеку c ++ с QT, однако в клиентском приложении, которое собирается использовать эту библиотеку, не будет никаких связанных библиотек qt.
I ' Мы следовали инструкциям по qt и создали файл pro и заголовочный файл, как показано в следующем примере.
Pro File:
QT -= gui
TEMPLATE = lib
CONFIG += dynamiclib
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS, MAITSCHSDK_LIBRARY
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
maitchsdk.cpp
HEADERS += \
maitchsdk.h
# Default rules for deployment.
unix {
target.path = $$[QT_INSTALL_PLUGINS]/generic
}
!isEmpty(target.path): INSTALLS += target
Заголовочный файл:
#ifndef MAITCHSDK_H
#define MAITCHSDK_H
#include <QtCore/QtGlobal>
#if defined(MAITSCHSDK_LIBRARY)
# define MAITSCHSDK_EXPORT Q_DECL_EXPORT
#else
# define MAITSCHSDK_EXPORT Q_DECL_IMPORT
#endif
class MAITSCHSDK_EXPORT MAItchSDK
{
public:
MAITSCHSDK_EXPORT MAItchSDK(const char *glimpseIp,int glimpsePort,const char *itchIp,int itchPort);
};
#endif // MAITCHSDK_H
Но когда я реализую это таким образом, файл заголовка содержит зависимости qt, поэтому клиентскому приложению также нужно иметь эти зависимости, а это не то, что мы хотели. И еще одно требование, которое у меня есть, - эту библиотеку также можно вызывать с golang (используя cgo), поэтому каким-то образом мне нужно создать оболочку c для этого библиотечного проекта с некоторым extern " C " методы, я просмотрел все документы и учебные пособия, но не смог найти правильного решения.
Кто-нибудь знает, как мне создать основу c C общая библиотека с использованием QT?
Спасибо