gpt4 book ai didi

c - mexFunction 引用外部头文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:39 25 4
gpt4 key购买 nike

我正在尝试使用 mex(MacOSX Lion 上的 MATLAB 2012b)编译 C 文件。我的项目包含三个文件:

  1. 定义主要功能的头文件,smdvquad.h
  2. smdvquad.h 的 C 实现,即 smdvquad.c其中#includes smdvquad.h 和
  3. 包含“mexFunction”的 C 文件,即 mxsmdvquad.c其中 #includes smdvquad.h

整个项目在 Netbeans 上编译得非常好,但是当我尝试在 MATLAB 上使用 mex 编译它时,即使用命令:

mex -largeArrayDims mxsmdvquad.c

抛出以下错误:

>> mex -largeArrayDims mxsmdvquad.c
Undefined symbols for architecture x86_64:
"_smdv_quad", referenced from:
_mexFunction in mxsmdvquad.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

mex: link of ' "mxsmdvquad.mexmaci64"' failed.

Error using mex (line 206)
Unable to complete successfully.

我还尝试使用 -I mex-argument 指定工作目录,即

mex -largeArrayDims -I/path/to/my/project/ mxsmdvquad.c

但徒劳无功!

最佳答案

我希望以下其中一项可行:

也许你还需要编译smdvquad.c

mex -largeArrayDims mxsmdvquad.c smdvquad.c

或者如果您已经编译了 smdvquad,您可能需要链接它:

mex -largeArrayDims mxsmdvquad.c smdvquad.o

或者如果它在不同的目录中,您需要使用 -L 将该目录添加到链接器:

mex -largeArrayDims -L/path/to/project mxsmdvquad.c smdvquad.o

关于c - mexFunction 引用外部头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com