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
如何将 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