Matlab код для C с использованием Matlab кодера

У меня есть некоторый рабочий код Matlab, который я пытаюсь преобразовать в код C, используя кодер Matlab. Я получаю эту ошибку:

18   c:\users\bla\project\strcmpi.h(79) : warning C4028: formal parameter 2 different from declaration
19   c:\users\bla\project\strcmpi.h(79) : error C2371: 'strcmpi' : redefinition; different basic types
20           c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\string.h(245) : see declaration of 'strcmpi'
21   NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
22   Stop.
23   The make command returned an error of 2
24   'An_error_occurred_during_the_call_to_make' is not recognized as an internal or external command,
25   operable program or batch file.

Это выглядит очень специфично для меня (я не опытный программист на Си). Кто-нибудь может указать мне правильное направление, чтобы преодолеть эту ошибку? Благодарю.

PS:

Вот некоторый адаптированный код Matlab:

if(strcmpi(parameters.x,'bladibla') == 1)

    % some code

else

    % some more code

end

где "параметры" является структурой. Я хотел бы придерживаться своей структуры, но если есть лучшие способы для достижения вышеизложенного, особенно в контексте кодера Matlab и C, пожалуйста, дайте мне знать.

1 ответ

Решение

Особенность strcmpi() (сравнение строк без учета регистра) заключается в том, что это не стандартная функция C. Таким образом, код, который опирается на него, но пытается быть переносимым между платформами, иногда должен предоставлять свою собственную реализацию, откладывая реализацию системы, если таковая имеется. По моему опыту, собственная реализация strcmpi () проекта будет защищена опцией конфигурации. Если вы откроете c:\users\bla\project\strcmpi.h, вы можете увидеть код, подобный следующему:

#ifndef CONFIG_STRCMPI_PRESENT
int strcmpi(const char *string1, const char *string2);
#endif  // CONFIG_STRCMPI_PRESENT

Если вы видите это, уловка для решения проблемы, вероятно, заключается в том, чтобы найти связанный файл config.h и раскомментировать следующую строку:

// #define CONFIG_STRCMPI_PRESENT

Это всего лишь предположение, основанное на моем опыте с аналогичными проблемами.

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