Ошибка компиляции при создании заголовков fbxsdk в визуальных студиях

Я пытался собрать как 2015, так и 2018 версии заголовков fbxsdk с визуальными студиями, но получил ошибку:

c: \ program files \ autodesk \ fbx \ fbx sdk \ 2018.0 \ include \ fbxsdk \ core \ fbxproperty.h (1161): ошибка C2903: 'GetPropertyValue': символ не является ни шаблоном класса, ни шаблоном функции

ошибка возникает в этом фрагменте кода:

        T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false)
    {
        return GetAnimationEvaluator()-> template GetPropertyValue<T>(*this, pTime, pForceEval);
    }

который находится внутри класса шаблона, версия заголовков для linux одинакова, но не вызывает ошибок, и я даже попробовал mingw g ++ и компилируется без ошибок (но не могу связать из-за того, что dll не создается с помощью g ++).

Что вообще делает этот фрагмент кода? Создать шаблон и вернуть его как значение?

Я удалил ключевое слово шаблона из функции, и он начал компилироваться в визуальных студиях (а g ++ начал выдавать ошибки), меняет ли это результат?

Может ли эта ошибка быть вызвана тем, что я использую Visual Studios 2017 вместо 2015, рекомендованного библиотекой fbxsdk? Кроме этого, я сделал все, что они рекомендовали здесь: help.autodesk.com/view/FBX/2018/ENU/?guid=FBX_Developer_Help_getting_started_installing_and_configuring_configuring_the_fbx_sdk_for_wind_html

Я установил библиотеку с: http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=26416244.


person Jose Duran    schedule 09.03.2018    source источник
comment
Я видел что-то подобное в другом вопросе несколько дней назад, я думаю, что это было описано как ошибка. Надеюсь, я найду это.   -  person Zebrafish    schedule 09.03.2018
comment
Кроме того, я считаю, что размещение кода в файле заголовка c / c ++ - плохая практика программирования. Я не эксперт по C ++ (скорее, специалист по c / Haskell), но разве нельзя разместить только объявления функций и классов C ++ в файле заголовка, а реализацию - в файлах cpp?   -  person Jose Duran    schedule 09.03.2018
comment
Не уверен, связано ли это с этим: stackoverflow.com/questions/48814193/ Кто прав? GCC и Clang или MSVC   -  person Zebrafish    schedule 09.03.2018


Ответы (1)


Я только что столкнулся с той же ошибкой. Решением было переключить режим соответствия на NO в Configuration Properties / C / C ++ / Language. Я не уверен, что это вызовет какие-либо проблемы в будущем, но на данный момент это помогло.

person Dobromir Todorov    schedule 14.04.2018
comment
Вы правы, это решает проблему для редактора MS VS, и я также обнаружил, что компиляция с использованием инструмента командной строки (cl) является другим решением, скорее всего, режим соответствия - это аргумент, используемый редактором для вызова cl компилятор. Быстрый поиск в Интернете показывает, что режим соответствия «да» теперь установлен по умолчанию в более новой версии MS VS, возможно, сообщить Autodesk было бы неплохо для них обновить свои инструкции по установке, но они отключили бесплатную электронную почту поддержки, а их форумы работают слишком медленно. - person Jose Duran; 18.04.2018