如何使用由Matlab生成的C代码?

4

我使用Matlab Coder为一个简单的Matlab数组加法函数生成了C代码,该函数将两个数组的元素相加。完成后,Matlab Coder会给我一个包含.c和头文件的包(其中还包括函数本身的C文件)。

  1. 我如何在像Dev C++或Code::Blocks这样的程序中使用这些C文件?

  2. 我如何初始化emxArray_real_T变量以包含整数数组的元素?


它们是C++函数还是C语言函数?(C++语言函数可以被覆盖和重载,而C语言没有这个能力。) - Thomas Matthews
我上周已经做过了。只需从你的IDE创建一个空项目,导入所有文件(包括主要示例),编译并运行即可。就是这样! - jpo38
这些文件是C文件。我有Dev-C ++,但每当我尝试编译主文件(由Matlab自己提供)时,它会给出链接器错误,说:“undefined reference to emxCreateND_real_T'”或“undefined reference to emxInitArray_real_T'”。 - Ahmad Shah
另外,当我创建一个新的空项目并导入所有文件,包括主要示例文件时,会出现错误提示:“mingw32-make.exe: *** No rule to make target 'Untitled3.o', needed by 'Project2.exe'. Stop.” - Ahmad Shah
C不是C++,C++也不是C! - too honest for this site
1个回答

2
如果您有支持C语言的IDE,比如Dev C++或Code Blocks,只需要用该IDE打开文件,编译并运行它即可。对于Code Blocks,按F9键编译和运行代码。
编辑:错误信息“undefined reference to emxInitArray_real_T”是由链接错误引起的。您可以创建自定义的MakeFile,并在其中选择(对于CodeBlocks:项目->属性->项目设置)。尝试使用以下这个:
CC=g++
CFLAGS=  -g
OBJECTS= main.o
LIBS = -Llibs -lMat

# --- targets
all:    main
main:   $(OBJECTS)
        $(CC)  -o main $(OBJECTS) $(LIBS)

main.o: main.cpp
        $(CC) $(CFLAGS) -Ilibs -c main.cpp

编辑2:对于Dev C ++:

1-使用文件 >> 新建项目 创建一个新项目。如果您使用自定义makefile,则可以忽略C / C ++选项。同时,空项目也可以。

2-使用Project >> Add to Project或顶部工具栏中间的'+'符号向新项目中添加源文件和头文件。

3-转到 Project >> Project Options (Alt + P) >> Makefile 并选中“使用自定义makefile”选项。然后指向下面的自定义makefile,如此帖子所述。


我有Dev-C ++,但每次尝试编译主文件(由Matlab自己提供)时,都会出现链接错误,指出:“undefined reference toemxCreateND_real_T'”或“ undefined reference to emxInitArray_real_T'”。 - Ahmad Shah
谢谢。它说“成功生成所有二进制输出”……但我还有一个问题。如果我想调用已编译的函数(假设它的声明是Func1(int x, int y)),现在该如何在新的C文件中调用它? - Ahmad Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接