Qt 응용 프로그램 (qtapp)의 일부 기능을 테스트하기 위해 Qt 응용 프로그램을 lib/dll 라이브러리로 빌드합니다. ctor 및 dtor가 라이브러리에서 올바르게 내보내졌습니다. 그러나 테스트 프로젝트 (consoleTest라는 Qt는 콘솔 프로젝트)를 컴파일하면 항상 다음 링크 오류로 실행 :Qt 애플리케이션을 참조하는 방법은 무엇입니까?
링크 : 1> Bibliothek "C : \ 사용자 \ GMBH 테스트 \ \ 64 \ 디버그 \ consoleTest. lib "및 Objekt C : \ Users \ gmbh \ test \ x64 \ Debug \ consoleTest.exp"werden erstellt 1> moc_testFour.obj : 오류 LNK2001 : Nicht aufgelöstes externes 기호 "public : 정적 구조체 QMetaObject const qtapp :: staticMetaObject "staticMetaObject const qtapp :: staticMetaObject"("staticMetaObject @ qtapp @@ 2UQMetaObject @@ B") "> testFour.obj : 오류 LNK2001 : Nicht aufgelöstes externes 기호"public : 정적 구조체 QMetaObject const qtapp :: staticMetaObject "(? staticMetaObject @ qtapp @@ 2UQMetaObject @B) ". 1> C : \ Users \ gmbh \ test \ x64 \ Debug \ consoleTest.exe : 치명적인 오류 LN K1120 : 1 nicht의 aufgelöste Externe
Qt는 응용 프로그램은 매우 간단합니다 :
는#ifndef QTAPP_H
#define QTAPP_H
#include <QtWidgets/QMainWindow>
#include "ui_qtapp.h"
class __declspec(dllexport) qtapp : public QMainWindow
{
Q_OBJECT
public:
qtapp(QWidget* parent = 0);
~qtapp();
private:
Ui::qtappClass ui;
};
#endif // QTAPP_H
구현 : 나는 단순히 테스트 프로젝트에 #include "qtapp.h"
포함하는 경우
#include "qtapp.h"
__declspec(dllexport) qtapp::qtapp(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
__declspec(dllexport) qtapp::~qtapp()
{
}
는, 컴파일러는 위의 산출 오류.
내 질문 : 오류의 원인은 무엇
- ?
- Qt 응용 프로그램을 lib로 올바르게 배포하는 방법은 무엇입니까?
제 컴파일러는 비주얼 스튜디오 2013, Qt는 실제로 Qt는 무관 한 질문 5.4.2
내 생각에, 당신은 내 목적을 이해하지 못합니다. 위의 qtapp는 실제로는 더미 프로젝트입니다. 내 최종 목표는 내 Qt 응용 프로그램에서 일부 기능을 테스트하는 것입니다. 이 속도로 Qt 응용 프로그램은 dll에서 처음으로 ** 내보낼 것입니다. 나중에 ** 테스트 프로젝트에서 ** 가져오고 ** 원하는 dll 함수가 호출되고 확인됩니다. – euroswenwickler
예제 코드를 사용하면 테스트 프로젝트에'qtapp.h'를 포함 시키면'__declspec (dllimport) '대신'__declspec (dllexport)'가 잘못 표시됩니다. 나는 더 완전한 예가 없으면 그 밖의 무엇이 잘못 될지 알 수 없다.) – E4z9