Измените 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

Но все равно безуспешно... Кто-нибудь получил идею?

0 ответов

Другие вопросы по тегам