MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错
Posted
技术标签:
【中文标题】MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错【英文标题】:MATLAB - Error creating maxmaci64 from jpeg_write.c 【发布时间】:2020-11-11 19:11:12 【问题描述】:我在使用 jpeg 工具箱中的 jpeg_read.c 和 jpeg_write.c 中的 Mex 制作 mexmaci64 文件时遇到问题。我问了我的问题here,jpeg_read 的问题就解决了。 但是当我编译 jpeg_write.c 时仍然有不同的错误。 一切都是一样的,我没有改变任何路径或任何东西。 我不明白为什么 Matlab 控制台会返回此错误。 这对任何人来说都很熟悉吗?请告诉我。
>> 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.
【问题讨论】:
您的系统上是否有“jpegint.h”文件?它是您下载的软件包的一部分吗? 不,我搜索了文件名,但它在任何地方都不存在。我不知道应该安装什么库才能拥有该文件。 【参考方案1】:首先:
通过指向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 文档。)
【讨论】:
感谢您的回复安德鲁。我搜索了文件名并找不到它。我应该安装 gdcm 包来拥有它吗?还是还有其他包? 所以我安装了 gdcm 包并从那里使用 jpegint.h。然后我尝试了 mex 并且它有效但显示了警告。我不在乎。现在,当我运行我的项目时,Matlab 向我显示了一个与我在此处提到的 jpeg_write 相关的错误。 ***.com/questions/64820620/…你能帮我处理那个安德鲁吗?我会很感激的。以上是关于MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错的主要内容,如果未能解决你的问题,请参考以下文章