使用GNU C++为Maya编译时出现编译器错误
Getting compiler errors when compiling for Maya using GNU C++
我对C++编程很熟悉,对使用Maya C++API编程也很熟悉。我一直在尝试使用GNU C++编译器,因为我有64位版本的Maya,但我只能自由使用32位版本的Visual C++。这一切都在64位Windows Vista中运行。
问题是,当我试图编译Maya附带的helloWorldCmd.cpp示例时,我会收到错误,说包含的Maya头文件有问题。Maya的编译器头是否真的有问题,或者只是GNU C++不能用于为Maya编译插件?我需要帮助,因为这个问题可能会阻止我进一步学习如何为Maya编写插件。
以下是生成的编译器错误。如果有人能破解问题所在,我将不胜感激:
C:MyPrograms>c++ helloWorldCmd.cpp -o helloWorld.exe
In file included from c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/
maya/MString.h:47:0, from c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/
maya/MSimple.h:48, from helloWorldCmd.cpp:30:
c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/maya/MTypes.h:239:8: e
rror: expected identifier before 'false'
c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/maya/MTypes.h:239:8: e
rror: expected '}' before 'false'
c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/maya/MTypes.h:239:8: e
rror: expected unqualified-id before 'false'
c:mingwbin../lib/gcc/mingw32/4.6.2/../../../../include/maya/MTypes.h:239:18:
error: expected declaration before '}' token
在windows中,您应该考虑使用visualstudio来编译maya插件,在linux g++中,正常的过程是这样的,我不确定在windows中如何。
gcc-fmessage length=0-Os-phread-Wno弃用-fno gnu keywords-fast math-fPIC-DLINUX-D_USER_=USER-D_HOST_=HOST-D_PROJECTNAME_=PROJECT-D_BUILDVERSION_=VERSION-DNDEBUG-DRQUIRE_IOSTREAM-D_BOOL-I$MAYA_LOCATION/include-I/home/USER/customIncludes-O3-shared-o/tm/helloWorldCmd.so helloWorldCmd.cpp
请注意D_BOOL。
请不要maya不找exe,maya在windows中找mll,等等在linux中。因此,如果你真的是maya-api的新手,你应该尝试使用visualstudio,maya-devkit有一个visualstudio插件向导,它将帮助你配置插件及其依赖项。
问题似乎是Maya没有正确检查C++关键字true
、false
和bool
类型。
在谷歌上搜索后,我找到了头文件的副本,如果你自己查看文件,你会发现它会检查宏_BOOL
,以确定它是否应该创建自己的bool
类型。
解决方案可能很简单,只需添加
#define _BOOL
在包括头文件之前。
请注意,如果头文件错误地检查其他内容,则可能会出现其他错误。
使用完整版本的Visual Studio的问题是,对于学习者来说,购买它的成本有点高,而且本机安装的Visual C++Express只能编译到32位目标。然而,我看到了这篇博客文章,它解释了如何让软件开发工具包与Visual C++Express一起使用,Visual C++Express可以编译到64位。它还解释了如何进行所有进一步的设置,为构建Maya插件做好准备:
http://prilisa.com/2012/01/my-first-maya-2011-c-plug-in.html
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 重载方法的方式会在使用临时调用时生成编译器错误
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 编译器错误:destuctor 的更宽松的抛出说明符
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- C++ G++ 编译器 - 错误:隐式声明的定义
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 模板模板参数和模板别名:编译器错误?
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- C1001内部编译器错误是由于矢量初始化(如数组)引起的
- 编译器错误(英特尔并行工作室 2019 与 Visual Studio 社区 2019)
- 如何在C++中克服此 C4430 编译器错误?
- 尝试使用 WinBGI 显示文本时出现编译器错误
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- C++自定义分配器大小参数作为模板参数会引发编译器错误