C++ 在visual Studio中构建fbxsdk头时发生编译错误

C++ 在visual Studio中构建fbxsdk头时发生编译错误,c++,visual-studio,g++,fbx,C++,Visual Studio,G++,Fbx,我尝试使用visual Studio构建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

我尝试使用visual Studio构建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);
    }
T EvaluateValue(const FbxTime&pTime=FBXSDK_TIME_INFINITE,bool pForceEval=false)
{
返回GetAnimationEvaluator()->模板GetPropertyValue(*this,pTime,pForceEval);
}
这是在一个模板类中,linux版本的头是相等的,但不会产生错误,我甚至尝试了mingw g++并编译了没有错误的文件(但由于没有使用g++创建dll,所以无法链接)

那段代码到底在做什么?创建模板并将其作为值返回

我从函数中删除了template关键字,它开始在visualstudio中编译(并且g++开始给出错误),这会改变结果吗

这个错误是不是因为我使用的是visual Studio 2017而不是fbxsdk库推荐的2015?除此之外,我在这里做了他们推荐的一切:


我是从以下位置安装库的:

我刚刚遇到了相同的错误。解决方案是在configurationproperties/C/C++/Language中将一致性模式切换为NO。我不确定这是否会在今后造成任何问题,但它现在起到了作用

几天前,我在另一个问题中看到过类似的情况,我认为它被描述为一个bug。我希望我能找到它。另外,我认为将代码放在c/c++头文件中是一种糟糕的编程实践。我不是C++专家(更多的是C/Haskell Gy),但是在头文件和CPP文件中实现C++的函数和类声明是不可能的吗?不确定是否与此有关:谁是正确的?GCC和Clang或MSVCYou是对的,这确实解决了MS VS编辑器的问题,我还发现使用命令行工具(cl)进行编译是另一种解决方案,很可能一致性模式是编辑器调用cl编译器时使用的参数。快速互联网搜索显示,在较新的MS VS版本中,一致性模式“是”现在是默认模式,可能告诉autodesk他们更新安装说明是个好主意,但他们禁用了免费支持电子邮件,并且论坛速度太慢。