Qt插件:: -1:错误:找不到-lpnp_basictools

时间:2016-11-22 12:27:50

标签: c++ qt plugins

我已经尝试了几天在我的简单Qt项目中使用第三方库,但到目前为止没有成功。

我尝试了Plug & Paint ExamplePlug & Paint Basic Tools Example tools / plugandpaint / plugins / basictools / basictools.pro 编译正常,但 tools / plugandpaint / app / app.pro 无法编译:

:-1: error: cannot find -lpnp_basictools
collect2.exe:-1: error: error: ld returned 1 exit status

我几乎将网站上的来源复制粘贴到我的电脑上。我能错过什么。

Windows 10

Qt Creator 3.6.0

  

基于Qt 5.5.1(MSVC 2013,32位)
  建于2015年12月15日01:01:38
  来自修订版b52c2f91f5

LIBS += your_lib_path/your_lib linux:LIBS += -L your_lib_path -lyour_lib win32:LIBS += your_lib_path/your_lib LIBS += -L lib/pcsc/ -lpcsclite LIBS += lib/pcsc/libpcsclite.a 2.add headers INCLUDEPATH += your_include_path INCLUDEPATH += . /usr/local/include)

app.pro

TARGET = plugandpaint
DESTDIR = ..

QT += widgets

HEADERS        = interfaces.h \
                 mainwindow.h \
                 paintarea.h \
                 plugindialog.h
SOURCES        = main.cpp \
                 mainwindow.cpp \
                 paintarea.cpp \
                 plugindialog.cpp

LIBS           = -L../plugins -lpnp_basictools

if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
   mac:LIBS = $$member(LIBS, 0) $$member(LIBS, 1)_debug
   win32:LIBS = $$member(LIBS, 0) $$member(LIBS, 1)d
}

# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint
INSTALLS += target

CONFIG += install_ok  # Do not cargo-cult this!

basictoolsplugin.pro

TEMPLATE      = lib
CONFIG       += plugin static
QT           += widgets
INCLUDEPATH  += ../../app
HEADERS       = basictoolsplugin.h
SOURCES       = basictoolsplugin.cpp
TARGET        = $$qtLibraryTarget(pnp_basictools)
DESTDIR       = ../../plugins

# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint/plugins
INSTALLS += target

CONFIG += install_ok  # Do not cargo-cult this!

1 个答案:

答案 0 :(得分:0)

即插即用(P&P)示例取决于从 P&P基本工具(P&P-BT)示例生成的库。换句话说,要运行第一个,您需要编译并链接第二个。 P&P 示例不是独立的。

我认为您有两种选择来运行 P&P

  1. 编译 P&P-BT 并确保它是 在 P&P
  2. 中链接
  3. 如果您仅对 该示例的动态插件,请在 P&P 中注释导入 P&P-BT 示例中的静态库。

我对其进行了测试,您必须在.pro文件中注释一些行,并在main.cpp文件中注释一行。

下面,我将显示与更改的行之间的差异,它会编译 P&P 而不会出错。

diff showing changes in code to remove usage of static library

打开后,它找不到任何插件,因为它没有加载默认的静态库,并且因为动态库的硬编码路径为空。要测试动态插件,请将路径更改为正确的文件夹,然后再次编译,或将插件移至硬编码的文件夹。

plug and paint without any plugins