使用CUDA和Maya API时命名空间发生冲突

时间:2014-01-28 00:49:03

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

我正在尝试使用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'

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

谢谢!

1 个答案:

答案 0 :(得分:3)

修改

我研究了将include包装在命名空间中的想法,并发现它不能正常工作。问题是命名空间包含在受损名称中,因此在链接时会得到未定义的符号。

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


在命名空间中包装一个#include可能有效......

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

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

maya::some_maya_symbol