c++ - 在 Mac 上的 Matlab 中集成 C++ Basler 相机库
问题描述
如何将 C++ 库集成到 Matlab 2018b (macOS Mojave) 以将它们与mex()
函数一起使用。目前我想使用 Basler 相机的 C++ 库来解决这个问题。为此,我必须包含以下文件:
*.framework、头文件、*.dylib 文件
否则#include
c++ 文件中的调用将不起作用。我已经使用以下命令在 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 中的集成?我很感激任何帮助。
解决方案
如果有人遇到同样的问题,我想发布一个我在此期间发现的解决方案。如果使用这些标志执行 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
推荐阅读
- php - 将php数组转换为较新的方括号版本
- java - 实验室在 Java 中构建一个矩形
- ios - 在 UnityWebRequest for iOS 应用程序中使用 http 时是否需要更新为 https
- c++ - 为什么我的执行时间不会写在文件中?
- python - PyArrow:使用嵌套类型在镶木地板中存储字典列表
- oracle - Mybatis,检索存储为CLOB spring boot的oracle字段
- graphics - 带有平方衰减的阴影总是使一切变黑
- react-native - 使用 Expo 运行的 React Native 应用程序实际上可以通过 Detox/Jest 测试吗?
- spring - Tomcat Session 和 Oracle Database 连接如何在 Java Spring Web 应用程序中相互交互?
- excel - 向宏添加插入文件名函数