Внешний заголовочный файл ilcplex \ cpxconst.h, вызывающий ошибку компилятора - PullRequest
1 голос
/ 13 апреля 2020

Мне был отправлен код для программы, встроенной в C, в которой используется алгоритм обучения с подкреплением. Мне нужно изменить его, но у меня возникают трудности с компиляцией кода. Вот результаты в CodeBlocks.

Все ошибки происходят из одной строки кода в заголовочном файле, который является частью каталога включения IBM CPLEX (include \ cplex \ cpxconst.h)

Строка, о которой идет речь следующее.

определение CPXDEPRECATEDAPI (версия) __declspe c (dllimport deprecated)

сообщения об ошибках - это несколько типов синтаксических ошибок, таких как: error: ожидаемый идентификатор или '(' до ')' токен

Каждая ошибка имеет примечания: к нескольким строкам кода в файле ilcplex \ cplex.h

Я использую CodeBlocks в Windows 10 Версия CPLEX 12.9.0

СООБЩЕНИЕ ПОЛНОЙ ОШИБКИ

|| === Сборка: выпуск в SWEM2020 (компилятор: GNU G CC Compiler) === | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1194 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1194 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1200 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1200 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "не рекомендуется" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1231 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ swemextras.h | 16 | ошибка: конфликтующие типы для 'trun c' | c: \ mingw \ include \ math.h | 820 | примечание: предыдущее объявление 'trun c' было здесь | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1194 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1194 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1200 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1200 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1231 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1231 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1237 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1237 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "не рекомендуется" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1242 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1242 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1597 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1597 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_genetic1.c || В функции 'GeneticAlgorithm1': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_genetic1.c | 64 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_genetic1.c | 67 | предупреждение: неиспользованная переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ dlist.c | 137 | ошибка: конфликтующие типы для 'InsertInOrder_dlist' | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ dlist.h | 19 | примечание: предыдущее объявление «InsertInOrder_dlist» было здесь | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1231 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1237 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1237 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1242 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1242 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидается ")" до "устарела" | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1597 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cpxconst.h | 243 | ошибка: ожидаемый идентификатор или маркер '(' before ')' | C: \ Program Files \ IBM \ ILOG \ CPLEX_Studio_Community129 \ cplex \ include \ ilcplex \ cplex.h | 1597 | примечание: в расширении макроса 'CPXDEPRECATEDAPI' | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ swemextras.h | 16 | ошибка: конфликтующие типы для 'trun c' | c: \ mingw \ include \ math.h | 820 | примечание: предыдущее объявление 'trun c' было здесь | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'RFAlgorithm1': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 183 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 185 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'Alg_MERwFirms_MustRun': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 466 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'Alg_MERwFirms': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 727 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 729 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'Alg_MERwFirmsSoftmax': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 934 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 936 | предупреждение: неиспользованная переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'Alg_ERSpilloverwFirms': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1179 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1181 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'Alg_ERSpilloverwFirmsSoftmax': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1393 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1395 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'RFAlgorithm': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1573 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1575 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c || В функции 'RFAlgorithmM': | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1784 | предупреждение: слишком много аргументов для формата [-Wformat-extra-args] | C: \ Users \ Tingle \ OneDrive \ Documents \ Coding \ SWEM2020 \ alg_rf.c | 1786 | предупреждение: неиспользуемая переменная lostLoad [-Wunused-variable] | || === Сбой сборки: 27 ошибок, 17 предупреждений (0 минут, 2 секунд) === |

1 Ответ

1 голос
/ 14 апреля 2020

Этот ответ очень похож на тот, который я дал здесь: C ++: Проблемы с make-файлом оптимизатора Cplex / cp при сборке проекта с использованием Clion с MinGW и компилятором g ++

CPLEX подробные системные требования (нажмите «Версия 12.9.0»> «Windows»> «Предварительные условия») показывают, что Visual Studio 2015-2019 являются единственными поддерживаемыми компиляторами на Windows.

Если мы смотрим на cpxconst.h, строка 243 (из вашего сообщения об ошибке), соответствующий код, который мы видим:

#   if defined(_WIN32) && !defined(BUILD_CPXSTATIC)
#      define CPXLIBAPI __declspec(dllimport)
#      define CPXDEPRECATEDAPI(version) __declspec(dllimport deprecated)
#      define CPXDEPRECATED(version) __declspec(deprecated)
...
#   endif

Исходя из этого, похоже, что ваш MinGW g cc определил _WIN32 и он определяет CPXDEPRECATEDAPI таким образом, который совместим только с Microsoft Visual C.

Вы можете заменить определение CPXDEPRECATEDAPI на no-op (т. Е. Отредактировать cpxconst.h, например, так:

#      define CPXDEPRECATEDAPI(version)

Однако вы, скорее всего, в конечном итоге просто запустите в какую-то другую ошибку в дальнейшем.

На Windows вам действительно нужно просто использовать Visual Studio 2015 или выше или, возможно, рассмотреть возможность использования WSL .

...