Измените real_T на real32_T
Я использую устаревший инструмент Matlab для генерации s-функции для некоторого пользовательского кода на Win x64.
Поскольку в пользовательском коде используются двойные указатели, которые не поддерживаются устаревшим инструментом, я написал небольшую функцию-обертку:
#include <cstddef>
#include "customCode.h"
inline void call_custom_code(double* u1, double* y1){
double* u[1] = {u1};
double* y[1] = {y1};
custom_code((const double**)u, y);
}
Я использую Visual Studio 2015 в качестве компилятора и вызываю mex-компилятор с помощью:
iFlags = {'COMPFLAGS="$COMPFLAGS /MP /TP /O2"','-largeArrayDims'};
legacy_code('compile', def,{iFlags{:}});
Теперь я хочу изменить точность float
скорее, чем double
, custom_code
-функция корректируется соответствующим образом, а оболочка изменяется на:
inline void call_custom_code(float* u1, float* y1){
float* u[1] = {u1};
float* y[1] = {y1};
custom_code((const float**)u, y);
}
Но я не могу понять, как сказать, чтобы mex-компилятор шел по встроенному типу matlab real_T
как float
скорее, чем double
и, таким образом, всегда получаю ошибки компилятора. Я попытался добавить следующие дополнительные флаги компилятора в COMPFLAGS
- переменная выше:
/Dreal_T=float
/DREAL_T
Но все равно безуспешно... Кто-нибудь получил идею?