我正在尝试使用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'
我不确定如何解决这个问题。有什么想法吗?
谢谢!
答案 0 :(得分:3)
修改强>
我研究了将include包装在命名空间中的想法,并发现它不能正常工作。问题是命名空间包含在受损名称中,因此在链接时会得到未定义的符号。
我找到的唯一可行的方法(除了修改其中一个库)是创建一个单独的源文件,只在那里包含冲突的文件,并为冲突的类型和函数创建包装器。
在命名空间中包装一个#include
可能有效......
namespace maya
{
#include "maya.h"
};
然后,通过命名空间引用maya.h
中的符号:
maya::some_maya_symbol
。