GetValueなどの関数を使用してQtに基づいて動的ライブラリを作成する必要があります。この関数は、QLineEditを使用してダイアログを呼び出し、入力値を返す必要があります。Qtクラスなしで構造を作成しました。ソースコードは正常にコンパイルされ、dllを取得しました。
しかし、Qtオブジェクトを追加すると、次のようなリンケージエラーが発生します。
guilib2.obj:エラーLNK2019:未解決の外部シンボル "__declspec(dllimport)public:virtual _ thiscall QApplication ::〜QApplication(void)"( _imp _ ?? 1QApplication @@ UAE @ XZ)関数 "void __cdecl GetValue(void)で参照"(?getValue @@ YAXXZ)
guilib2.obj:エラーLNK2019:未解決の外部シンボル "__declspec(dllimport)public:__thiscall QApplication :: QApplication(int&、char * *、int)"(_ imp ?? 0QApplication @@ QAE @ AAHPAPADH @ Z)関数で参照"void __cdecl GetValue(void)"(?GetValue @@ YAXXZ)
この問題を解決する方法は?
以下のソースコード:
guilib2.h
#ifndef GUILIB2_H
#define GUILIB2_H
#include "GUILib2_global.h"
GUILIB2SHARED_EXPORT void GetValue();
#endif // GUILIB2_H
GUILib2_Global.h
#ifndef GUILIB2_GLOBAL_H
#define GUILIB2_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(GUILIB2_LIBRARY)
# define GUILIB2SHARED_EXPORT Q_DECL_EXPORT
#else
# define GUILIB2SHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // GUILIB2_GLOBAL_H
guilib2.cpp
#include "guilib2.h"
#include <QtGui>
#include <QtWidgets/QApplication>
void GetValue()
{
int argc =1;
char *argv[1];
argv[0]="guilib2.dll";
QApplication a(argc,argv);
}
GUILib2.pro
TARGET = GUILib2
TEMPLATE = lib
QT += gui
DEFINES += GUILIB2_LIBRARY
SOURCES += guilib2.cpp
HEADERS += guilib2.h\
GUILib2_global.h