提问人:mabalenk 提问时间:7/8/2023 最后编辑:mabalenk 更新时间:7/13/2023 访问量:99
无法在 MacOS 上编译调用 mallinfo() 的 C/C++ 代码
Unable to compile C/C++ code calling mallinfo() on MacOS
问:
我需要帮助在 MacOS 系统上使用 C 代码中的函数。尽管将 包含在我的源文件中,但我在使用 GNU gcc 版本 12.3.0 编译代码时遇到了以下错误:mallinfo
<stdlib.h>
MPI/worker.C: In member function 'int64_t Worker::cmembytes1(uint64_t*)':
MPI/worker.C:181:19: error: aggregate 'Worker::cmembytes1(uint64_t*)::mallinfo minf' has incomplete type and cannot be defined
181 | struct mallinfo minf;
| ^~~~
MPI/worker.C:182:19: error: invalid use of incomplete type 'struct Worker::cmembytes1(uint64_t*)::mallinfo'
182 | minf = mallinfo() ;
| ^
MPI/worker.C:181:10: note: forward declaration of 'struct Worker::cmembytes1(uint64_t*)::mallinfo'
181 | struct mallinfo minf;
| ^~~~~~~~
make: *** [<builtin>: MPI/worker.o] Error 1
更新:我怀疑,我的大部分问题都来自混合原生 macOS 标头和 GNU 标头。当我包含macOS SDK以使用时,定义会发生冲突。mallinfo()
答:
1赞
Ted Lyngmo
7/8/2023
#1
struct mallinfo
,如果它甚至存在于您的系统上,则在 中定义,因此添加:malloc.h
#include <malloc.h>
如果找不到该标头,则不能使用 .struct
商城信息
:
Gnulib 未修复的可移植性问题:
某些平台缺少此功能:macOS 11.1、FreeBSD 13.0、NetBSD 9.0、OpenBSD 6.7、Minix 3.1.8、IRIX 6.5、Solaris 11 2010-11、mingw、MSVC 14。
评论
0赞
mabalenk
7/8/2023
我可以在我的系统上找到它: ,但是一旦我包含它,编译器就会用 ./Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/sys/malloc.h
error: '__darwin_wctype_t' does not name a type; did you mean '__darwin_wchar_t'
1赞
Ted Lyngmo
7/8/2023
@mabalenk好的,这是问题的下一个层次,需要进一步调查。从这里开始:stackoverflow.com/a/61586097/7582247
0赞
mabalenk
7/10/2023
这似乎是矫枉过正,用一个错误换取几十个样式错误。我在想,也许有 MacOS 的类似物吗?mallinfo
__darwin***
mallinfo
1赞
Ted Lyngmo
7/10/2023
@mabalenk 您运行的是哪个 MacOS 版本?
1赞
Ted Lyngmo
7/10/2023
@mabalenk 哦,好的。这可能是解释,是的。太糟糕了,我没有解决方法:-(
评论
::
make