Matlab VLFeat - ошибка: ожидается '=', ',', ';', 'asm' или '__attribute__' перед 'void' - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь запустить файл с именем vl_compile.m для VLFeat и получаю эту ошибку в отношении файла заголовка mexutils.h:

>> vl_compile
vl_compile: assuming that Visual C++ is the active compiler
vl_compile: compiling for PCWIN64 (64 bit)
MEX C:\Users\verastegui\Documents\panorama\lib\vlfeat-0.9.21\toolbox\aib\vl_aib.c
Building with 'MinGW64 Compiler (C)'.

Error using mex
In file included from C:\Users\verastegui\Documents\panorama\lib\vlfeat-0.9.21\toolbox\aib\vl_aib.c:16:0:
C:\Users\verastegui\Documents\panorama\lib\vlfeat-0.9.21\toolbox/mexutils.h:175:10: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'void'

EXTERN_C void __attribute__((noreturn))
         ^~~~

C:\Users\verastegui\Documents\panorama\lib\vlfeat-0.9.21\toolbox/mexutils.h: In function 'vlmxError':
C:\Users\verastegui\Documents\panorama\lib\vlfeat-0.9.21\toolbox/mexutils.h:277:1: warning: 'noreturn' function does return
}
^

Error in vl_compile (line 140)
    mex(cmd{:}) ;

Вот макрос в mexutils.h где на самом деле возникает ошибка:

/* these attributes suppress undefined symbols warning with GCC */
#ifdef VL_COMPILER_GNUC
#if (! defined(HAVE_OCTAVE))
EXTERN_C void __attribute__((noreturn))
mexErrMsgIdAndTxt (const char * identifier, const char * err_msg, ...) ;
#else
extern void __attribute__((noreturn))
mexErrMsgIdAndTxt (const char *id, const char *s, ...);
#endif
#endif

А вот функция, при которой возникает предупреждение:

vlmxError (VlmxErrorId errorId, char const * errorMessage, ...)
{
    MEXUTILS_RAISE_HELPER ;
    mexErrMsgIdAndTxt (formattedErrorId, formattedErrorMessage) ;
}

Я видел некоторые исправления в StackOverflow, которые говорят, что нужно либо закомментировать EXTERN_C void __attribute__((noreturn)) или добавить к нему точку с запятой, но это вызывает больше ошибок. Я использую самую последнюю версию VLFeat и самую последнюю версию компилятора MinGW. При необходимости я могу предоставить больше кода, но это только самая последняя версия VLFeat. Любая помощь будет принята с благодарностью.

...