解决 Maya 插件 (v2016.5) 的此构建错误的困难
Difficulties troubleshooting this build error for a Maya plugin (v2016.5)
尝试从源代码构建此插件但使用 Visual Studio 2017:
https://github.com/david-cattermole/mayaMatchMoveSolver/blob/master/BUILD_WINDOWS.md
除了我一直在使用 x64_x86 VS 2017 的 Cross Tools 命令提示符 ,我遵循了它的指示,但在尝试构建时我不断收到这些错误
错误预览:
13>------ Build started: Project: mmSolver, Configuration: Debug x64 ------
13>Building Custom Rule C:/Users/Desktop02/Documents/mayaMatchMoveSolver2017/CMakeLists.txt
13>pluginMain.cpp
13>C:\MinGW\include\stdio.h(38): warning C4068: unknown pragma
13>C:\MinGW\include\msvcrtver.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\w32api.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\sdkddkver.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\w32api.h(184): warning C4005: '_EXTERN_C' : macro redefinition
13> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\yvals.h(472) : see previous definition of '_EXTERN_C'
13>c:\mingw\include\sys/types.h(34): warning C4068: unknown pragma
13>C:\MinGW\include\stdio.h(260): error C2143: syntax error : missing ';' before '*'
13>C:\MinGW\include\stdio.h(260): warning C4229: anachronism used : modifiers on data are ignored
13>C:\MinGW\include\stdio.h(260): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
13>C:\MinGW\include\stdio.h(260): error C2377: 'FILE' : redefinition; typedef cannot be overloaded with any other symbol
13> C:\MinGW\include\stdio.h(220) : see declaration of 'FILE'
13>C:\MinGW\include\stdio.h(261): error C2143: syntax error : missing ';' before '*'
13>C:\MinGW\include\stdio.h(261): warning C4229: anachronism used : modifiers on data are ignored
13>C:\MinGW\include\stdio.h(261): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
13>C:\MinGW\include\stdio.h(261): error C2061: syntax error : identifier 'FILE'
13>C:\MinGW\include\stdio.h(262): error C2062: type 'int' unexpected
13>C:\MinGW\include\stdio.h(263): error C2062: type 'int' unexpected
完全错误:
https://pastebin.com/HzxLed93
并且我使用 Visual Studio 2012 Update 5 得到类似的错误,如文档中所述(可能没有关于 stdio.h
的错误)。
我真的不知道如何进一步解决这个问题,所以如果有人能提供一些 assistance/insight 将不胜感激...
一些细节:
CMake 3.17.3
Python 2.7.12
玛雅版本:
操作系统:Microsoft Windows 7 商业版,64 位 Windows 7 Service Pack 1(内部版本 7601)
剪辑编号:201603022110-988944-2
Maya 版本:Autodesk Maya 2016 Extension 2
玛雅 API: 201650
Qt 版本:4.8.6
合成管理器:True
Window 经理:Windows Aero
GPU:版本:2015.11.4.11。功能级别 5。
适配器:GeForce GTX 560 Ti/PCIe/SSE2
供应商 ID:4318。设备 ID:4608
Driver : nvoglv64.dll:23.21.13.9135.
API:OpenGL V.4.6。
最大纹理尺寸:16384 * 16384。
最大纹理坐标:32
支持的着色器版本(顶点:5,几何:5,像素 5)。
着色器编译器配置文件:(最佳卡配置文件)
可用的主动立体声支持:0
GPU 内存限制:1024 MB。
CPU 内存限制:31107 MB。
编辑:我正在查看此线程以寻找类似的错误:
https://forum.zdoom.org/viewtopic.php?f=3&t=13253
并且一位用户表示从 MinGW 读取包含文件会产生问题。如果是这样,我该如何切换 VS 2017,不再使用 MSVC(?) 文件而不是 MinGW?有没有我可以用 cmake 命令添加的东西来强制它改变?
我在原始 repo 中提交了一个问题,插件的作者帮助我解决了这个问题,以下是我采取的步骤:
- re-installed VS 2012 更新 4 (https://my.visualstudio.com/Downloads?q=visual%20studio%202012)
- re-generated solution/project 通过文档
此插件
- 从 Visual Studio
的 mmSolver 项目的“其他包含目录”中删除了 C:\MinGW
- 将
icons\CMakeLists.txt
中的 COMMAND rcc -binary resources.qrc -o resources.rcc
替换为 COMMAND C:/Python27/Lib/site-packages/PyQt4/pyrcc4.exe -o resources.rcc resources.qrc
(我不得不为 sphinx-build
做类似的事情)
完成所有这些后,我 re-compiled 解决方案似乎有效?尽管有很多警告,但希望这些是预期的.../
而且我看到生成了一个 .mod 文件和一个与您的最新版本同名的目录,但只是复制它们并没有真正做任何事情,所以我最终做的是获取版本zip 文件并解压缩,但用我这边生成的文件替换了 .mll 插件文件。我还注意到,如果我离开 .mod 文件,我的 Maya 版本仍然没有加载任何东西,所以我猜测我更改了 mod 文件中的 + PLATFORM:win64 MAYAVERSION:2016 mayaMatchMoveSolver 0.3.6
行到 + PLATFORM:win64 MAYAVERSION:2016.5 mayaMatchMoveSolver 0.3.6
,这让一切都正常加载。
有关更多信息,请参阅我在此处提交的问题:https://github.com/david-cattermole/mayaMatchMoveSolver/issues/148
尝试从源代码构建此插件但使用 Visual Studio 2017: https://github.com/david-cattermole/mayaMatchMoveSolver/blob/master/BUILD_WINDOWS.md
除了我一直在使用 x64_x86 VS 2017 的 Cross Tools 命令提示符 ,我遵循了它的指示,但在尝试构建时我不断收到这些错误
错误预览:
13>------ Build started: Project: mmSolver, Configuration: Debug x64 ------
13>Building Custom Rule C:/Users/Desktop02/Documents/mayaMatchMoveSolver2017/CMakeLists.txt
13>pluginMain.cpp
13>C:\MinGW\include\stdio.h(38): warning C4068: unknown pragma
13>C:\MinGW\include\msvcrtver.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\w32api.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\sdkddkver.h(35): warning C4068: unknown pragma
13>C:\MinGW\include\w32api.h(184): warning C4005: '_EXTERN_C' : macro redefinition
13> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\yvals.h(472) : see previous definition of '_EXTERN_C'
13>c:\mingw\include\sys/types.h(34): warning C4068: unknown pragma
13>C:\MinGW\include\stdio.h(260): error C2143: syntax error : missing ';' before '*'
13>C:\MinGW\include\stdio.h(260): warning C4229: anachronism used : modifiers on data are ignored
13>C:\MinGW\include\stdio.h(260): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
13>C:\MinGW\include\stdio.h(260): error C2377: 'FILE' : redefinition; typedef cannot be overloaded with any other symbol
13> C:\MinGW\include\stdio.h(220) : see declaration of 'FILE'
13>C:\MinGW\include\stdio.h(261): error C2143: syntax error : missing ';' before '*'
13>C:\MinGW\include\stdio.h(261): warning C4229: anachronism used : modifiers on data are ignored
13>C:\MinGW\include\stdio.h(261): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
13>C:\MinGW\include\stdio.h(261): error C2061: syntax error : identifier 'FILE'
13>C:\MinGW\include\stdio.h(262): error C2062: type 'int' unexpected
13>C:\MinGW\include\stdio.h(263): error C2062: type 'int' unexpected
完全错误: https://pastebin.com/HzxLed93
并且我使用 Visual Studio 2012 Update 5 得到类似的错误,如文档中所述(可能没有关于 stdio.h
的错误)。
我真的不知道如何进一步解决这个问题,所以如果有人能提供一些 assistance/insight 将不胜感激...
一些细节:
CMake 3.17.3
Python 2.7.12
玛雅版本:
操作系统:Microsoft Windows 7 商业版,64 位 Windows 7 Service Pack 1(内部版本 7601)
剪辑编号:201603022110-988944-2
Maya 版本:Autodesk Maya 2016 Extension 2
玛雅 API: 201650
Qt 版本:4.8.6
合成管理器:True
Window 经理:Windows Aero
GPU:版本:2015.11.4.11。功能级别 5。
适配器:GeForce GTX 560 Ti/PCIe/SSE2
供应商 ID:4318。设备 ID:4608
Driver : nvoglv64.dll:23.21.13.9135.
API:OpenGL V.4.6。
最大纹理尺寸:16384 * 16384。
最大纹理坐标:32
支持的着色器版本(顶点:5,几何:5,像素 5)。
着色器编译器配置文件:(最佳卡配置文件)
可用的主动立体声支持:0
GPU 内存限制:1024 MB。
CPU 内存限制:31107 MB。
编辑:我正在查看此线程以寻找类似的错误: https://forum.zdoom.org/viewtopic.php?f=3&t=13253
并且一位用户表示从 MinGW 读取包含文件会产生问题。如果是这样,我该如何切换 VS 2017,不再使用 MSVC(?) 文件而不是 MinGW?有没有我可以用 cmake 命令添加的东西来强制它改变?
我在原始 repo 中提交了一个问题,插件的作者帮助我解决了这个问题,以下是我采取的步骤:
- re-installed VS 2012 更新 4 (https://my.visualstudio.com/Downloads?q=visual%20studio%202012)
- re-generated solution/project 通过文档 此插件
- 从 Visual Studio 的 mmSolver 项目的“其他包含目录”中删除了
- 将
icons\CMakeLists.txt
中的COMMAND rcc -binary resources.qrc -o resources.rcc
替换为COMMAND C:/Python27/Lib/site-packages/PyQt4/pyrcc4.exe -o resources.rcc resources.qrc
(我不得不为sphinx-build
做类似的事情)
C:\MinGW
完成所有这些后,我 re-compiled 解决方案似乎有效?尽管有很多警告,但希望这些是预期的.../
而且我看到生成了一个 .mod 文件和一个与您的最新版本同名的目录,但只是复制它们并没有真正做任何事情,所以我最终做的是获取版本zip 文件并解压缩,但用我这边生成的文件替换了 .mll 插件文件。我还注意到,如果我离开 .mod 文件,我的 Maya 版本仍然没有加载任何东西,所以我猜测我更改了 mod 文件中的 + PLATFORM:win64 MAYAVERSION:2016 mayaMatchMoveSolver 0.3.6
行到 + PLATFORM:win64 MAYAVERSION:2016.5 mayaMatchMoveSolver 0.3.6
,这让一切都正常加载。
有关更多信息,请参阅我在此处提交的问题:https://github.com/david-cattermole/mayaMatchMoveSolver/issues/148