首页 > 解决方案 > 在 Mac 上的 Matlab 中集成 C++ Basler 相机库

问题描述

如何将 C++ 库集成到 Matlab 2018b (macOS Mojave) 以将它们与mex()函数一起使用。目前我想使用 Basler 相机的 C++ 库来解决这个问题。为此,我必须包含以下文件:

*.framework、头文件、*.dylib 文件

否则#includec++ 文件中的调用将不起作用。我已经使用以下命令在 QT Creator 中毫无问题地集成了库,并且#include <pylon/...>工作正常:

mac: LIBS += -F$$PWD/../../../../../../Library/Frameworks/ -framework pylon macx: LIBS += -L$$PWD/../ ../../../../../Library/Frameworks/pylon.framework/Versions/A/Libraries/ -lLog_gcc_v3_1_Basler_pylon_v5_1 macx: LIBS += -L$$PWD/../../.. /../../../Library/Frameworks/pylon.framework/Versions/A/Libraries/ -lGenApi_gcc_v3_1_Basler_pylon_v5_1 INCLUDEPATH += $$PWD/../../../../../.. /Library/Frameworks/pylon.framework/Headers/GenICam DEPENDPATH += $$PWD/../../../../../../Library/Frameworks/pylon.framework/Headers/GenICam INCLUDEPATH + = $$PWD/../../../../../../Library/Frameworks/pylon.framework/Versions/A/Libraries DEPENDPATH += $$PWD/../../. ./../../../Library/Frameworks/pylon.framework/Versions/A/Libraries QMAKE_CXXFLAGS += -F/Library/Frameworks

在Matlab中我试图这样做,但它不起作用,并且在调用c ++文件中的库时出现错误:

ipath_1 = '-I/Library/Frameworks';
ipath_2 = '-I/Library/Frameworks/pylon.framework/Headers/GenICam';
ipath_3 = '-I/Library/Frameworks/pylon.framework/Versions/A/Libraries';
lib_1 = '-L/Library/Frameworks/pylon.framework/Versions/A/Libraries/ -lLog_gcc_v3_1_Basler_pylon_v5_1';
lib_2 = '-L/Library/Frameworks/pylon.framework/Versions/A/Libraries/ -lGCBase_gcc_v3_1_Basler_pylon_v5_1';
lib_3 = '-L/Library/Frameworks/pylon.framework/Versions/A/Libraries/ -lGenApi_gcc_v3_1_Basler_pylon_v5_1';
mex('-largeArrayDims',...
    '-c',...
     ipath_1, ipath_2, ipath_3,...
     lib_1, lib_2, lib_3,...
    'basler_set_get.cpp')
% Error:
% #include <pylon/PylonIncludes.h>
%          ^~~~~~~~~~~~~~~~~~~~~~~
% 1 error generated.

如何管理 Matlab 中的集成?我很感激任何帮助。

标签: c++matlabmex

解决方案


如果有人遇到同样的问题,我想发布一个我在此期间发现的解决方案。如果使用这些标志执行 mex 调用,则一切都正确编译:


mex  '-I/Library/Frameworks/pylon.framework/Versions/A/Headers/GenICam'...
    '-I/Library/Frameworks/pylon.framework/Versions/A/Headers/pylon/usb'...
    '-I/Library/Frameworks/pylon.framework/Versions/A/Headers'...
    '-L/Library/Frameworks/pylon.framework/Versions/A/Libraries'...
    '-lGCBase_gcc_v3_1_Basler_pylon_v5_1.dylib'...
    '-lGenApi_gcc_v3_1_Basler_pylon_v5_1.dylib'...
    CXXFLAGS='-F/Library/Frameworks $CXXFLAGS'...
    LDFLAGS='-framework pylon $LDFLAGS'...
    LIBS+='-framework pylon'...
    [YOUR FILENAME].cpp


推荐阅读