【问题标题】:Compile error when building fbxsdk headers in visual studios在 Visual Studio 中构建 fbxsdk 标头时出现编译错误
【发布时间】: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


【解决方案1】:

我刚刚遇到了同样的错误。解决方案是在配置属性/C/C++/语言中将一致性模式切换为否。我不确定这是否会导致任何问题,但它现在完成了工作。

【讨论】:

  • 你说得对,这确实解决了 MS VS 编辑器的问题,而且我还发现使用命令行工具 (cl) 编译是另一种解决方案,很可能一致性模式是一个参数编辑器用来调用 cl 编译器。快速的互联网搜索表明,一致性模式是现在是较新的 MS VS 版本中的默认设置,也许告诉 Autodesk 更新安装说明是个好主意,但他们禁用了免费支持电子邮件,而且他们的论坛太慢了。
猜你喜欢
  • 2021-02-04
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2021-10-29
相关资源
最近更新 更多