我正在尝试使用Mingw编译Simulink S函数。
我的Makefile包含以下内容:
MINGWPATH=D:/Mingw
MATLABROOT=C:\PROGRA~1\MATLAB\R2014b
CC=$(MINGWPATH)/bin/gcc
MEXFLAG=-shared -DMATLAB_MEX_FILE -I$(MATLABROOT)\simulink\include -I$(MATLABROOT)\extern\include -Wl,--export-all-symbols $(LIBS) $(MEXSRC) -o $(MEXTGT).mexw64
LIBS= -L$(MATLABROOT)/bin/win64 -L$(MATLABROOT)/extern/lib/win64/microsoft -lmex -lmx -lmwlapack -lmwblas -leng
MEXTGT=SFCN_Block
MEXSRC=SFCN_Block.cpp
all:$(MEXTGT)
$(MEXTGT): $(MEXSRC)
$(CC) $(MEXFLAG) -ladvapi32 -luser32 -lgdi32 -lkernel32 -lmingwex
SFCN_Block.cpp
文件在#include 'simstruc.h'
中包含simstruc.h
和C:\PROGRA~1\MATLAB\R2014b\simulink\include
。
但是我收到以下错误:
SFCN_Block.cpp:12:22: fatal error: simstruc.h: No such file or directory
#include "simstruc.h"
^
怎么可能出错?
(我的Matlab版本是Windows 7下的R2014b(64位),我正在尝试使用Mingw编译。我的Makefile基于this question上接受的答案。)
答案 0 :(得分:0)
将Makefile的第一行更改为:
MINGWPATH=D:/Mingw
MATLABROOT="C:\Program Files\MATLAB\R2014b"
SIMULINK_INCLUDE_PATH=$(MATLABROOT)/simulink/include
MATLAB_EXTERN_INCLUDE_PATH=$(MATLABROOT)/extern/include
CC=$(MINGWPATH)/bin/gcc
MEXFLAG=-shared -DMATLAB_MEX_FILE -IBlocks -IDesignPatterns -ILogging -I$(SIMULINK_INCLUDE_PATH) -I$(MATLAB_EXTERN_INCLUDE_PATH) -Wl,--export-all-symbols $(LIBS) $(MEXSRC) -o $(MEXTGT).mexw64
解决No such file or directory
错误。任何人都可以解释原因吗?
现在我收到以下错误:
C:\Program Files\MATLAB\R2014b/bin/win64/libmex.dll: file not recognized: File format not recognized
但这是另一个问题。
答案 1 :(得分:-1)
以下是遇到的一些类似问题:http://www.mathworks.com/matlabcentral/newsreader/view_thread/150266
问题(来自上面的链接):
我正在使用S-Function Builder将文件读入我的simulink模型。一世 继承了另一个开发人员的代码和模型。我必须 每次我想要更改文件名时重建S-Function。所以 据我所知,它今天停止工作,没有理由 任何。当我按下构建按钮时,我得到了一些东西 “链接器错误1083.没有这样的文件或目录”的影响simstruc.h“ 现在,每个模型中的每个S-function Builder都会失败 错误。我搜索了simstruc.h并在几个中找到了它 matlab路径中的目录。我在想MEX链接器或 编译器或者由于某种原因现在构建S函数的任何东西 不知道在哪里寻找simstruc.h,也许它的路径是 不知何故腐败了?
回答(来自同一个链接):
您好, 这是修复,您可以从r2010a发布的rFC10b中覆盖以下文件
C:\ Program Files \ MATLAB \ R2010b \ bin \ mex.bat
C:\ Program Files \ MATLAB \ R2010b \ bin \ mex.pl
C:\ Program Files \ MATLAB \ R2010b \ bin \ mexext.bat
C:\ Program Files \ MATLAB \ R2010b \ bin \ mexsetup.pm
C:\ Program Files \ MATLAB \ R2010b \ bin \ mexutils.pm
我不确定哪个是问题文件,但它以这种方式工作。