Ошибки оператора / синтаксиса Libtorch в Visual Studio

Привет, недавно я установил Libtorch и без проблем смог использовать его в своем новом проекте Visual Studio. В настоящее время я пытаюсь использовать Libtorch в существующем проекте CUDA. Но у меня возникают эти странные ошибки, когда я включаю заголовок фонарика, и я не могу найти в Интернете никакого решения моей проблемы. Кто-нибудь знает, что может быть причиной этих ошибок?

Severity    Code    Description Project File    Line    Suppression State
Error   C2833   'operator {' is not a recognized operator or type   DepthSensing    e:\research\libtorch\include\c10\util\flat_hash_map.h   1433    
Error   C2059   syntax error: 'newline' DepthSensing    e:\research\libtorch\include\c10\util\flat_hash_map.h   1433    
Error   C2238   unexpected token(s) preceding ';'   DepthSensing    e:\research\libtorch\include\c10\util\flat_hash_map.h   1433    
Error   C2143   syntax error: missing ';' before 'const'    DepthSensing    e:\research\libtorch\include\c10\util\flat_hash_map.h   1433    
Error   C2833   'operator {' is not a recognized operator or type   DepthSensing    e:\research\libtorch\include\c10\util\order_preserving_flat_hash_map.h  1552    
Error   C2059   syntax error: 'newline' DepthSensing    e:\research\libtorch\include\c10\util\order_preserving_flat_hash_map.h  1552    
Error   C2238   unexpected token(s) preceding ';'   DepthSensing    e:\research\libtorch\include\c10\util\order_preserving_flat_hash_map.h  1552    
Error   C2143   syntax error: missing ';' before 'const'    DepthSensing    e:\research\libtorch\include\c10\util\order_preserving_flat_hash_map.h  1552

Среда

  • Windows 10
  • CUDA 10.1
  • Visual Studio 2017
  • C++14

person theycallmefm    schedule 04.04.2020    source источник
comment
Определены ли у вас какие-либо макросы, которые могут повлиять на компиляцию заголовков libtorch? Что произойдет, если вы включите читатели libtorch в качестве самых первых заголовков в свой код?   -  person john    schedule 04.04.2020
comment
Вы были правы, @john! В другой библиотеке был макрос, имя которого совпадает с именем типа в библиотеке Libtorch, поэтому его путают при компиляции. Подходит ли такой подход в моем случае? Я пробовал это сейчас, но я не уверен, что это правильный путь. stackoverflow.com/questions/6884093/   -  person theycallmefm    schedule 04.04.2020
comment
Здесь нет идеального решения, два заголовка в принципе несовместимы. Если то, что вы делаете, работает на вас, сделайте это. Просто не забудьте добавить несколько комментариев к вашему коду, чтобы объяснить, почему вы сделали то, что сделали.   -  person john    schedule 04.04.2020


Ответы (1)


Благодаря @john я понял, что в другой библиотеке есть макрос, имя которого совпадает с именем типа в библиотеке Libtorch (в моем случае это был макрос с именем V), поэтому он запутался в компиляции. Я пока придерживаюсь этого решения.

предупреждение C4003: недостаточно фактических параметров для макрос 'max' - Visual Studio 2010 C ++

person theycallmefm    schedule 12.04.2020