【问题标题】:Namespace clash when using CUDA and Maya API使用 CUDA 和 Maya API 时的命名空间冲突
【发布时间】:2014-02-19 02:47:57
【问题描述】:

我正在尝试使用 CUDA v5.5(在 VS2010 中)编译 Maya 2014 插件,如果我尝试同时包含 CUDA(特别是 vector_types.h),我会收到错误,原因是 Maya 和CUDA 定义了相同的类型:

C:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h(148): error C2371: 'short2' : redefinition; different basic types
C:\Program Files\Autodesk\Maya2014\include\maya/MTypes.h(269) : see declaration of 'short2'

我不确定如何解决这个问题。有什么想法吗?

谢谢!

【问题讨论】:

    标签: c++ visual-studio-2010 cuda maya


    【解决方案1】:

    编辑:

    我研究了将包含包装在名称空间中的想法,发现它效果不佳。问题是名称空间包含在损坏的名称中,因此在链接时会得到未定义的符号。

    我发现唯一可行的方法(除了修改其中一个库)是创建一个单独的源文件,仅在其中包含冲突文件,并为冲突的类型和函数创建包装器。


    在命名空间中包装一个#include 可能会起作用...

    namespace maya
    {
       #include "maya.h"
    };
    

    然后,通过命名空间引用来自maya.h 的符号:

    maya::some_maya_symbol.

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2013-01-26
      相关资源
      最近更新 更多