2017-03-20 4 views
1

다른 Qwt 클래스 중 QwtPlotMagnifier를 사용하는 라이브러리가 있습니다. QwtPlotMagnifier를 서브 클래 싱하여 플롯이 재조정 될 때 신호를 낼 수 있도록 결정했습니다. 라이브러리 (mylib.lib)가 컴파일되지만이를 사용하는 응용 프로그램이 QwtPlotMagnifier의 moc 출력과 관련하여 해결되지 않은 외부에 대해 불평하고 있습니다.qwt 클래스를 하위 클래스로 만들 때 해결되지 않은 외부

정적으로 qwt를 연결하고 있습니다. 최하위 레벨 라이브러리에서 전 처리기 지시문 QWT_DLL을 가져야한다는 요구 사항은 여기에 적용되지 않습니다. 서브 클래스 선언에 대한 특별

mylib.lib(moc_PlotMagnifier.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QwtPlotMagnifier::staticMetaObject" ([email protected]@@[email protected]@B) 

아무것도 :

#pragma once 

#include "qwt_plot_magnifier.h" 
/** 
subclass of QwtPlotMagnifier to provide a signal when zooming is complete 
*/ 
class PlotMagnifier : public QwtPlotMagnifier 
{ 
    Q_OBJECT 
public: 
    explicit PlotMagnifier(QWidget *w); 
    virtual ~PlotMagnifier(); 
signals: 
    void rescaled(); 
protected: 
    virtual void rescale(double factor); 
}; 

난 비주얼 스튜디오 2013 FWIW에

다음은 오류 (서브 클래스가 PlotMagnifier라고 함)입니다. 내 응용 프로그램에는 qwtd.lib이 항상 포함되어 있습니다. 이것은 내 부분에 어리석은 실수가되어야 해. 내 뇌를 킥 스타트 시켜줘, 누군가!

답변

0

응용 프로그램 프로젝트 파일 (.PRO)에 다음 줄을 추가

Visual Studio 프로젝트에 모두 포함시켜야하는지 확인하십시오.

C/C++/Additional Include Directories
여기에서 확인하십시오. <qwt_dir\include> 경로 여기

Linker/General/Additional Library Directories

Linker/Input
포함해야 할 <qwt_dir\lib> 경로이어야 수 있어야 qwtd.lib (release 용) 및 qwt.lib

또한

체크 (debug 구성) ReleaseDebug 구성에 해당 항목이 있으므로 Debug 만 구성하면됩니다. 전자 Release 구성 작업.

또한, 때로는 Qt는 추가 기능을 추가하는 데 실패, 프로젝트보기에서 Generated Files 아래 PlotMagnifier에 대한 moc_* 파일 (moc_plotmagnifier.cpp 같은)를 가지고 있는지 확인하십시오.

+0

위의 두 가지 사항을 모두 해결했다고 생각합니다. MSVC를 사용하여 컴파일 중이므로 설정을 구성 할 필요가 없습니다 (그리고 QWT는 이미 성공적으로 QWT를 사용하고 있습니다). 또한 qwt를 정적으로 연결하므로 QWT_DLL이 필요하지 않습니다. 사실 내가 이것을 정의하면, 모든 곳에서 오류가 발생합니다. – mike

+1

나는 그것을 다시 가져옵니다! 정리 및 재구성 한 후에는 QWT_DLL로 정상적으로 컴파일 할 수 있습니다. 이것은 문제를 해결하고 많은 감사합니다! – mike

+0

나는 downvote를 여기에서 이해하지 않는다. .. 이것은 틀린 것처럼 보인다. – Bebs

0
:

CONFIG += qwt 

는 또한 프로젝트 파일에 QWT를 호출하는 "매우 낮은 라이브러리를 구성하려면이 줄을 추가 :