Mac 在 Matlab 中集成 C++ Basler 相机库

Integrate C++ Basler camera libraries in Matlab on Mac

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

*.framework, Header Files, *.dylib Files

否则 c++ 文件中的 #include 调用将无法工作。我已经使用以下命令在 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 中的集成?我很感激任何帮助。

如果有人遇到同样的问题,我想post一个我在此期间找到的解决方案。如果使用这些标志执行 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