我试图从单独的项目中调用pylon5 C ++库,但没有成功。
我一直在寻找答案但是却无法弄清楚我做错了什么。
我想我的问题可能是设置环境变量和/或库路径? (我是基于Linux的初学者,当我在网上阅读教程时,我很容易对一些显而易见的东西感到困惑?我应该知道但我不知道的事情)
我测试过相机本身正在使用我的Raspberry,我可以使用示例代码抓取图像。
我甚至可以修改相机设置(曝光时间等)并拍照并将其保存到SD卡中。所以相机模块不是问题。我的问题更有可能以正确的方式使用共享库。
此外,我已经制作了一些简单的共享库,希望我可以使用我的Pylon相机代码。当我没有在我的库中包含任何Pylon代码时,它工作正常并返回我想要的值。我甚至可以在那里添加Pylon接头,它仍然可以很好地编译。然后,我可以从另一个(在本例中为C#)代码调用我的lib并按预期获得返回值,但是当尝试调用任何Pylon代码(在我的库中)时,将导致'dllNotFoundException'。
我已将我的pylon5代码放在/ opt / pylon5中,正如我从baslerweb.com获得的手册中所建议的那样 http://s.baslerweb.com/media/documents/How%20to%20build%20pylon%20applications%20on%20Raspberry%20Pi.pdf
这是我的项目文件(我正在使用QtCreator)
#-------------------------------------------------
QT -= gui
QT += core
TARGET = baslercamera
TEMPLATE = lib
DEFINES += BASLERCAMERA_LIBRARY
SOURCES += baslercamera.cpp \
Grab.cpp \
Image.cpp \
main.cpp \
BaslerDLL.cpp
HEADERS += baslercamera.h\
baslercamera_global.h \
Image.h \
Grab.h
unix {
target.path = /usr/lib
INSTALLS += target
}
#INCLUDEPATH += $$PWD/../pylon5/include
#DEPENDPATH += $$PWD/../pylon5/include
INCLUDEPATH += /opt/pylon5/include
DEPENDPATH += /opt/pylon5/include
INCLUDEPATH += /home/pi/baslercamera/
DEPENDPATH += /home/pi/baslercamera/
LIBS += "/opt/pylon5/lib" \
-lpylonc
正如您所看到的,INCLUDEPATH和LIBS变量是我的弱点。我无法弄清楚我应该包含哪些库以及如何正确包含它们。除了将它们包含在我的项目文件中之外,我还应该设置一些环境变量吗?
我也试过设置一些库路径,但我真的不知道我应该在那里做什么。用户手册说
Set the pylon environment variables:
# source ./pylon4/bin/pylon-setup-env.sh pylon4
然后我用pylon5替换了pylon4。我认为这可能会将环境变量设置为使用pylon库。但我不确定那里会发生什么。塔架5指南说:
Environment Variables
=====================
From pylon 5.0 upwards, no additional environment variables are required to
run pylon-based applications.
For development, though, the compiler must know where pylon is installed.
The pylon samples use the environment variable PYLON_ROOT to find the relevant information.
For your convenience, we created the pylon-setup-env.sh script located in the
pylon5/bin directory which can carry out the complete setup.
To setup the environment for a pylon installation in <path> execute:
source <path>/bin/pylon-setup-env.sh <path>
If you want the environment for the standard installation to be persistent, you
can add
source /path/to/your/pylon5/bin/pylon-setup-env.sh /path/to/your/pylon5
to ~/.bashrc
For special use cases, you can do a manual environment setup as follows:
export PYLON_ROOT=/path/to/your/pylon5
Even though there is currently only one variable needed, using pylon-setup-env.sh
is still the preferred way to set up your environment, as we might add more variables
in the future.
我已经尝试了很多方面,我很乐意为我们自己的库中使用这些共享库提供帮助或建议。
答案 0 :(得分:0)
我刚刚开始工作,但我的项目使用Scons作为构建系统。不过,我发现的问题是它没有连接足够的库。这就是我设置得到我需要的东西(qmake
语法可能关闭):
LIBS += \
-L/opt/pylon5/lib64 \
-lpylonbase \
-lGenApi_gcc_v3_0_Basler_pylon_v5_0 \
-lGCBase_gcc_v3_0_Basler_pylon_v5_0 \
-lLog_gcc_v3_0_Basler_pylon_v5_0 \
-lMathParser_gcc_v3_0_Basler_pylon_v5_0 \
-lXmlParser_gcc_v3_0_Basler_pylon_v5_0 \
-lNodeMapData_gcc_v3_0_Basler_pylon_v5_0