Como corrigir erro do Matlab mex: You can't use 'macro parameter character #' in vertical mode.

Problema

Ao tentar compilar sua S-Function do Matlab ou Simulink usando um comando como

mex_error_example.sh
mex mysfunction.cpp

você recebe o seguinte erro:

pdftex_mex_error.txt
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=mex)
 restricted \write18 enabled.
entering extended mode
(./sine_wave_generator.cpp
This is MeX  Version 1.05  18 XII 1993  (B. Jackowski & M. Ry\'cko)
! You can't use `macro parameter character #' in vertical mode.
l.1 #
     define S_FUNCTION_NAME  sine_wave_generator
?

Solução

O problema aqui é que você não está usando o mex do Matlab, mas um programa diferente baseado em TeX chamado mex. Isso provavelmente se deve ao binário mex estar na sua variável de ambiente PATH antes do diretório de binários do Matlab.

Para corrigir isso, você pode:

  • Usar o caminho completo para o binário mex na sua instalação do Matlab, ex. /usr/local/MATLAB/R2021b/bin/mex, ou
  • Mudar a ordem dos diretórios na sua variável de ambiente PATH para que o diretório de binários do Matlab venha antes do outro diretório de binários mex.
  • Usar o comando mex da linha de comando do Matlab, que deve automaticamente usar o binário correto.

Check out similar posts by category: Matlab/Simulink C/C++