1

同じライブラリにないヘッダーを追加するまで、問題なく動作するQT Designerカスタムプラグインを作成しました...

これを MTBFWidget.cpp/.h に追加すると:

#include "KinectHandler.h"

プラグインが見つかりません。削除すると機能します..これは、外部が見つからないことを示しています。私は現時点で本当に立ち往生しており、あらゆる形での助けに感謝しています..私の問題は、dll / libを構築する方法を示すCMakeLists.txtである可能性があると思います..ここに私のCMakeLists.txtがあります:

    ########### Client Library ###############


    find_package( Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED )
    include( ${QT_USE_FILE} )
    LINK_LIBRARIES( ${QT_LIBRARIES} )

    SET (CLIENT_SOURCES  client.cpp
                         mtbf.cpp
                         pose.cpp
                         MTBFReader.cpp
                         KinectHandler.cpp )

    SET (CLIENT_HEADERS ${PROJECT_SOURCE_DIR}/include/client.h 
                        ${PROJECT_SOURCE_DIR}/include/mtbf.h
                        ${PROJECT_SOURCE_DIR}/include/pose.h
                        ${PROJECT_SOURCE_DIR}/include/MTBFReader.h
                        ${PROJECT_SOURCE_DIR}/include/KinectHandler.h
                        )

    ADD_LIBRARY(client SHARED  ${CLIENT_SOURCES} ${CLIENT_HEADERS} ${CLIENT_MOC_SRC} ${UISrcs})

    TARGET_LINK_LIBRARIES(client ${QT_LIBRARIES} ${Boost_LIBRARIES} ${ODYSSEUS_LIBRARIES})

    ###########################QT Designer Plugin ###################

    set (PLUGIN_MOC_H ${PROJECT_SOURCE_DIR}/include/MTBFWidgetPlugin.h 
                      ${PROJECT_SOURCE_DIR}/include/mtbfwidget.h)

    set (PLUGIN_SRCS MTBFWidgetPlugin.cpp 
                     mtbfwidget.cpp)

    include_directories(${PROJECT_SOURCE_DIR}/include
                        ${QT_QTDESIGNER_INCLUDE_DIR} )

    QT4_WRAP_CPP( MOCsrc ${PLUGIN_MOC_H} )

    ADD_LIBRARY(mtbf_plugin SHARED  ${MOCsrc}  ${PLUGIN_MOC_H} ${PLUGIN_SRCS} )

    add_dependencies(mtbf_plugin client )

    SET_TARGET_PROPERTIES(mtbf_plugin PROPERTIES COMPILE_FLAGS "${QT_DEFINITIONS} -DQDESIGNER_EXPORT_WIDGETS -DQT_PLUGIN -DQT_NO_DEBUG -DQT_SHARED")

    TARGET_LINK_LIBRARIES(mtbf_plugin ${QT_LIBRARIES} client ${Boost_LIBRARIES} ${ODYSSEUS_LIBRARIES})

    set( QT_PLUGIN_PATH $ENV{QT_PLUGIN_PATH} )
    if( QT_PLUGIN_PATH )
        get_target_property( TMP_LIBRARY_PATH mtbf_plugin LOCATION )
        add_custom_command( TARGET mtbf_plugin POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy ${TMP_LIBRARY_PATH} ${QT_PLUGIN_PATH}/designer )
    endif( QT_PLUGIN_PATH )

編集 :

QT関連のインクルード作品。他のすべての include outside はありません

作品:

#include "QtGui\qabstractbutton.h"

動作しません :

#include "boost\thread.hpp"

奇妙なことに、私のプログラムはこれらすべてのファイルを見つけることができ、正しくコンパイルすることさえできます..

4

2 に答える 2

1

最後に....私は解決策を見つけました..誰かがこの問題を抱えている場合:

すべての外部依存関係 (私の場合はブースト DLL) をQt/XXX/bin フォルダーにコピーする必要があります

私のためにそれを解決するには: C:\Qt\4.8.4\bin\boost_system-vc100-mt-1_52.dll が存在する必要があります。

依存関係を見つけるのにも役立つもの: 依存関係チェッカーをダウンロードし、必要な .dll を確認して、それを Qt bin フォルダーにドロップします。

于 2013-05-15T12:20:31.663 に答える
0

ここをチェック

include_directories(${PROJECT_SOURCE_DIR}/include
                    ${QT_QTDESIGNER_INCLUDE_DIR} )

このリストにブーストインクルードフォルダーを追加したと思います。"KinectHandler.h" このファイルをプロジェクト ディレクトリ /include にコピーします。

于 2013-05-15T12:20:09.243 に答える