【发布时间】:2018-08-17 14:05:21
【问题描述】:
我尝试使用 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);
}
在模板类中,标头的 linux 版本相同但不会产生错误,我什至尝试了 mingw g++ 并且编译没有错误(但由于 dll 不是用 g++ 创建的,所以无法链接)。
那段代码到底在做什么?创建模板并将其作为值返回?
我从函数中删除了 template 关键字,它开始在 Visual Studio 中编译(并且 g++ 开始给出错误),这会改变结果吗?
是否会因为我使用 Visual Studio 2017 而不是 fbxsdk 库推荐的 2015 而导致此错误?除此之外,我在这里做了他们推荐的所有事情:https://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
【问题讨论】:
-
几天前我在另一个问题中看到过类似的东西,我认为它被描述为一个错误。我希望我能找到它。
-
另外,我认为将代码放在 c/c++ 头文件中是一种不好的编程习惯。我不是 c++ 专家(更像是 c/Haskell 专家),但难道不能只将 c++ 的函数和类声明放在头文件中,将实现放在 cpp 文件中吗?
-
不确定是否与此有关:stackoverflow.com/questions/48814193/… 谁是对的? GCC 和 Clang 或 MSVC
标签: c++ visual-studio g++ fbx