MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错

MATLAB - Error creating maxmaci64 from jpeg_write.c

我在使用来自 jpeg 工具箱的 jpeg_read.c 和 jpeg_write.c 的 Mex 制作 mexmaci64 文件时遇到了问题。我问了我的问题 ,jpeg_read 的问题解决了。 但是当我编译 jpeg_write.c 时我仍然有不同的错误。 一切都是一样的,我没有改变任何路径或任何东西。 我不明白为什么 Matlab console returns 这个错误。 这对任何人来说都很熟悉吗?请告诉我。

>> mex -compatibleArrayDims -I/usr/local/Cellar/jpeg/9d/include jpeg_write.c -L/usr/local/Cellar/jpeg/9d/lib -ljpeg
Building with 'Xcode with Clang'.
Error using mex
/Users/folder/jpeg_toolbox/jpeg_write.c:56:10: fatal error: 'jpegint.h' file not found
#include <jpegint.h>
         ^~~~~~~~~~~
1 error generated.

首发:

通过指向 jpeg 或其他库的 /usr/local/Cellar/jpeg/<version>/include 位置,您依赖于当前安装的特定版本。您可能想改用 /usr/local/opt/jpeg/include/ 等。 /usr/local/opt 是 Homebrew 公开其已安装包内容的非版本化展示的地方。

所以:

mex -compatibleArrayDims -I/usr/local/Cellar/jpeg/9d/include ...

这是指向 jpeg 库。 jpeg 图书馆是否提供 jpegint.h

$ ls /usr/local/Cellar/jpeg/9d/include/
jconfig.h  jerror.h  jmorecfg.h  jpeglib.h

没有。这就是为什么找不到它的原因。所以你必须弄清楚你实际上可以从哪里得到 jpegint.h。点击 Google 并查阅您的文档以找出您实际尝试从中提取 jpegint.h 的库,并使用适当的 -I-L 将其提取出来, 和 -l 标志。

如果您认为您已经安装了它,您可以使用find /usr/local/Cellar -name jpegint.h 来查找它。我在 gdcm 包中找到它。

[~] $ find /usr/local/Cellar -name jpegint.h
/usr/local/Cellar/gdcm/3.0.8_1/include/gdcm-3.0/gdcmjpeg/jpegint.h

所以你可能想要这样的东西:

mex -compatibleArrayDims -I/usr/local/opt/jpeg/include ...
    -I/usr/local/opt/gdcm/include/gdcm-3.0/gdcmjpeg ...
    jpeg_write.c ...
    -L/usr/local/opt/jpeg/lib -L/usr/local/opt/gdcm/lib ...
    -ljpeg -lgdcmjpeg16

(我不知道你是否真的想要 -lgdcmjpeg8-lgdcmjpeg12-lgdcmjpeg16,或者其他东西。我只是在这里猜测。请参阅 GDCM 文档.)