【发布时间】:2026-02-05 04:15:02
【问题描述】:
如何将 C++ 库集成到 Matlab 2018b (macOS Mojave) 中以将它们与 mex() 函数一起使用。目前我想使用 Basler 相机的 C++ 库来解决这个问题。为此,我必须包含以下文件:
*.framework、头文件、*.dylib 文件
否则 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 依赖路径 += $$PWD/../../../../../../Library/Frameworks/pylon.framework/Headers/GenICam 包含路径 += $$PWD/../../../../../../Library/Frameworks/pylon.framework/Versions/A/Libraries 依赖路径 += $$PWD/../../../../../../Library/Frameworks/pylon.framework/Versions/A/Libraries QMAKE_CXXFLAGS += -F/库/框架
在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 中管理集成?我很感激任何帮助。
【问题讨论】:
-
您的文件系统中的
pylon/PylonIncludes.h在哪里?编译器会告诉你问题是什么。 -
标头位于
/Library/Frameworks/pylon.framework/Versions/A/Headers将标头与“-I..”链接到 mex 也会导致相同的错误