首页 / 资讯中心 / 文章详情

Maya 2018.6 DEVKIT 插件开发环境配置与避坑指南

Maya 2018.6 DEVKIT 插件开发环境配置与避坑指南 ★ FEATURED ARTICLE
简介这是一份面向Maya插件开发者与TD的Windows版Autodesk Maya 2018.6 DEVKIT开发套件适合需要基于C、Python、C#扩展Maya功能、搭建定制工作流或研究底层API的中高级用户。压缩包共6297个文件约159.3MB包含大量h头文件、py与pypredef脚本、cpp源码、sln/vcxproj工程、mel脚本及html/pdf文档等覆盖API头文件、示例工程、编译构建配置与说明资料。已有4332人学习说明其在Maya二次开发人群中具备一定参考价值。借助其中的源码、示例和文档读者可了解节点、命令、插件注册与界面扩展的实现方式对照工程配置完成编译调试并为开发渲染、动画、自动化流程等自定义工具提供可复用的参考。1. 先别急着解压Maya 2018 6 Update DEVKIT 的安装边界某开发者在配 Maya 2018.6 插件时把Maya 2018 6 Update DEVKIT Windows.zip解压后直接拖进工程结果编译报找不到maya/MFnPlugin.h换了个盘符又重新配一遍链接阶段又撞上LNK2019。这不是 Maya 主程序安装包而是 maya开发工具包也就是常说的 maya开发套件maya2018 的插件工程要靠它对齐头文件、导入库和运行时目录。把 DEVKIT 当普通压缩包随手解压后面加载.mll时很容易翻车。适合正在做 Maya 2018.6 插件、命令扩展、工具架脚本联动的人先把目录和版本边界定清楚再谈编译。2. 环境清单与目录规划Windows 下 Maya 2018 开发工具包的落位拿到Maya 2018 6 Update DEVKIT Windows.zip后第一件事不是双击解压到桌面而是先确认主机上已经有一套能正常启动的 Maya 2018.6。DEVKIT 只提供开发侧的头文件、库和示例工程不负责补齐主程序缺少的 DLL也不替代 Maya 运行时。主机上只有 Maya 2020 或 2022却拿 2018.6 的 DEVKIT 编插件后面十有八九会在加载阶段报模块初始化失败。目录规划的目标很简单让MAYA_LOCATION、DEVKIT 解压目录、插件构建目录三者互不覆盖升级或回滚时不至于把原包弄丢。2.1 版本对齐Maya 2018.6、VS 工具集与 x64 位宽Maya 2018 系列在 Windows 上要按 x64 编译插件工程不要选 Win32。工具集这块Maya 2018 系列常见做法是使用 Visual Studio 2015 的 v140 工具集机器上只装了 VS2017 或 VS2019 时可以装 v140 生成工具再用-T v140指定不要直接拿 v141、v142 硬编后说“能生成就行”。Maya 加载插件时看的是 ABI 和运行时依赖不是只看.mll后缀。DEVKIT 里的include和lib要来自同一个 2018.6 更新包别把头文件换成 2018.6、库还留着旧版这种混搭最容易出“编译能过、加载就崩”的黑匣子问题。下面这张表是我一般会先核对的环境项路径按自己的机器替换不要照抄盘符项目建议值核对方式Maya 主程序Maya 2018.6x64启动后看关于窗口版本DEVKITMaya 2018 6 Update DEVKIT Windows.zip原包解压后保留原压缩包工具集v140x64 Releasecmake -T v140或 VS 工程属性开发目录D:\SDK\Maya2018_6_DEVKIT不要放在中文路径和空格路径下构建目录D:\Build\maya2018_plugins与源码、DEVKIT 分离插件输出D:\Build\maya2018_plugins\out单独加入MAYA_PLUG_IN_PATH注意路径里尽量不用中文、空格和过长的目录名。Maya 插件加载器对路径的处理不算玄学但 Windows 命令行、CMake 缓存和旧版工程文件叠在一起时空格路径足够让排查多花半小时。版本对齐还要看更新号。2018 6 Update说明这是 2018.6 更新对应的开发包工程里如果还引用旧的 2018 初版库可能出现符号对不上。常见做法是把 DEVKIT 解压后先看include/maya下是否有MFnPlugin.h、MPxCommand.h再看lib下是否有Foundation.lib、OpenMaya.lib这类导入库。看不到这些不要继续写 CMake先回头确认压缩包是不是只解压了一半或者解压工具把目录层级多套了一层。2.2 解压与目录结构核对devkit 里到底该看哪些文件解压时我一般会建一个固定目录例如D:\SDK\Maya2018_6_DEVKIT然后把压缩包里的顶层内容展开进去。不要出现Maya2018_6_DEVKIT\Maya2018_6_DEVKIT\include这种双套目录CMake 里写路径时很容易多写或少写一层。解压完先做三件事确认include目录存在确认lib目录存在确认示例插件目录里有工程文件或 CMake 脚本。DEVKIT 的用途是给插件工程提供编译依据不是把所有文件复制进 Maya 安装目录复制进去不但不会自动注册插件还可能让后续更新时分不清哪个是原包文件。# 以 PowerShell 为例先定义两个变量后续命令都复用 $env:MAYA_DEVKIT D:\SDK\Maya2018_6_DEVKIT $env:MAYA_LOCATION D:\Apps\Maya2018 # 换成你的 Maya 2018.6 安装目录 # 核对 DEVKIT 关键目录不存在就先别往下走 Test-Path $env:MAYA_DEVKIT\include\maya\MFnPlugin.h Test-Path $env:MAYA_DEVKIT\lib\Foundation.lib Test-Path $env:MAYA_DEVKIT\lib\OpenMaya.lib # 列出顶层目录确认没有多套一层 Get-ChildItem $env:MAYA_DEVKIT | Select-Object Name, Mode这段命令的逻辑是先把 DEVKIT 根目录和 Maya 安装目录分开存到环境变量再用Test-Path做存在性检查。$env:MAYA_DEVKIT指向解压后的开发包根目录$env:MAYA_LOCATION指向主程序安装目录两者不能混用。Foundation.lib和OpenMaya.lib是最小命令插件常用的导入库缺少它们时链接阶段会直接失败。最后一条Get-ChildItem用来发现目录层级是否多套了一层如果输出里又出现一个同名目录就把内层内容上移别在 CMake 里靠../..硬凑。2.3 环境变量预置MAYA_LOCATION 与 PATH 的先后关系环境变量不要等到编译报错才补。MAYA_LOCATION给 CMake 和脚本一个稳定入口PATH让运行时能找到 Maya 的 DLL。这里有个顺序问题PATH里如果同时存在多个 Maya 版本的bin加载插件时可能拿到错误版本的运行时。常见做法是把当前要用的 Maya 2018.6bin放到PATH前面构建完成后在同一个终端里启动 Maya避免终端继承的路径和桌面快捷方式不一致。系统环境变量可以设但调试阶段更推荐在 PowerShell 会话里临时设置出了问题关掉终端就恢复不用去系统属性里来回改。# 临时会话设置适合调试确认稳定后再落到系统环境变量 $env:MAYA_LOCATION D:\Apps\Maya2018 $env:MAYA_PLUG_IN_PATH D:\Build\maya2018_plugins\out $env:PATH $env:MAYA_LOCATION\bin;$env:PATH # 检查 Maya 运行时 DLL 是否在路径里 Test-Path $env:MAYA_LOCATION\bin\Foundation.dll where.exe Foundation.dllMAYA_PLUG_IN_PATH是给插件管理器找.mll的目录不是给编译器找头文件的路径别和include混在一起。PATH前置 Maya 的bin是为了让插件依赖的运行时 DLL 优先命中 2018.6 那一套。where.exe Foundation.dll能列出当前会话会命中的 DLL 位置如果第一条不是目标 Maya 目录就说明PATH里还有别的版本排在前面。调试阶段用临时变量稳定后再写进系统变量这个习惯能省掉不少“昨天能加载、今天换了终端就不行”的来回。3. 配置开发环境include、lib 与 CMake 的三处关键路径DEVKIT 解压完只是把材料摆上桌真正让工程跑起来的是三处路径头文件包含路径、导入库路径、运行时 DLL 搜索路径。三处路径各自服务不同阶段包含路径错了编译就停库路径错了链接就停运行时路径错了要等 Maya 加载插件才爆。很多人把这三处都写成同一个目录结果 CMake 能配置成功生成.mll后一加载就报 126。下面按一个最小命令插件走一遍命令和参数都按 Windows x64、Release 来写读者可以按自己的目录替换。3.1 环境变量与工程包含路径先建一个最小工程目录例如D:\Work\maya2018_hello里面只放helloDevkit.cpp和CMakeLists.txt。源码里包含 Maya 头文件时写#include maya/MFnPlugin.h不要写#include MFnPlugin.h也不要写死绝对路径。包含路径应该指向 DEVKIT 的include目录也就是让编译器看到include\maya\MFnPlugin.h这一层。CMake 里用target_include_directories把路径挂到目标上不要用全局include_directories污染整个工程。库路径同理指向lib目录链接时写库文件名。这样换一台机器只需要改MAYA_DEVKIT和MAYA_LOCATION两个变量工程文件不用动。cmake_minimum_required(VERSION 3.16) project(helloDevkit LANGUAGES CXX) # 统一从环境变量取路径避免在工程里写死盘符 set(MAYA_DEVKIT $ENV{MAYA_DEVKIT}) set(MAYA_LOCATION $ENV{MAYA_LOCATION}) if(NOT MAYA_DEVKIT OR NOT MAYA_LOCATION) message(FATAL_ERROR 请先设置 MAYA_DEVKIT 和 MAYA_LOCATION) endif() set(MAYA_INCLUDE_DIR ${MAYA_DEVKIT}/include) set(MAYA_LIB_DIR ${MAYA_DEVKIT}/lib) add_library(helloDevkit SHARED helloDevkit.cpp) target_include_directories(helloDevkit PRIVATE ${MAYA_INCLUDE_DIR}) target_link_libraries(helloDevkit PRIVATE ${MAYA_LIB_DIR}/Foundation.lib ${MAYA_LIB_DIR}/OpenMaya.lib ) set_target_properties(helloDevkit PROPERTIES PREFIX SUFFIX .mll OUTPUT_NAME helloDevkit )这段 CMake 的逻辑是先校验两个环境变量缺少就直接FATAL_ERROR避免生成一个空路径工程。MAYA_INCLUDE_DIR指向 DEVKIT 的include所以源码里写maya/MFnPlugin.h才能命中。Foundation.lib提供基础类型和状态类OpenMaya.lib提供命令、插件注册相关符号。SUFFIX .mll让 Windows 下生成 Maya 插件后缀PREFIX 防止生成libhelloDevkit.mll这种带前缀的文件。OUTPUT_NAME固定输出名后面加载脚本就不用猜文件名。3.2 CMake 工具链与插件工程骨架工具链选择不要靠默认。CMake 用-G指定生成器用-A x64指定架构用-T v140指定工具集。机器上只装了 VS2019 时-G Visual Studio 16 2019 -A x64 -T v140是常见做法如果 v140 没装CMake 会在生成阶段报工具集不可用这时去装 v140 生成工具不要临时换成 v142 然后指望 Maya 认。Release 配置要显式指定因为 Maya 插件加载 Release 运行时Debug 版.mll可能依赖调试版 CRT加载时直接失败。构建目录单独放在D:\Build\maya2018_plugins不要放在源码目录里清理时更干净。# 在 PowerShell 或 cmd 中执行先生成再构建 cmake -S D:\Work\maya2018_hello -B D:\Build\maya2018_plugins ^ -G Visual Studio 16 2019 -A x64 -T v140 ^ -DCMAKE_BUILD_TYPERelease cmake --build D:\Build\maya2018_plugins --config Release-S是源码目录-B是构建目录两者分开可以保留 CMake 缓存又不会把源码目录弄乱。-G指定生成器-A x64指定 64 位-T v140指定工具集。-DCMAKE_BUILD_TYPERelease对多配置生成器不一定直接生效所以构建命令里再写--config Release。生成阶段如果报找不到Foundation.lib先看MAYA_DEVKIT是否指到解压根目录而不是指到include或lib里面。构建完成后去D:\Build\maya2018_plugins\Release找helloDevkit.mll找不到就说明输出目录被生成器改了用--target helloDevkit --config Release单独构建一次看日志。最小命令插件的源码可以按下面写重点是插件入口导出和命令注册。Windows 下入口函数要导出否则 Maya 加载时找不到initializePlugin。命令类继承MPxCommanddoIt里输出一行信息注册名用helloDevkit后面在脚本里调用同名命令。#include maya/MFnPlugin.h #include maya/MPxCommand.h #include maya/MGlobal.h #include maya/MStatus.h class HelloDevkitCmd : public MPxCommand { public: MStatus doIt(const MArgList) override { MGlobal::displayInfo(hello from Maya 2018.6 devkit); return MS::kSuccess; } static void* creator() { return new HelloDevkitCmd(); } }; #ifdef _WIN32 #define PLUGIN_EXPORT __declspec(dllexport) #else #define PLUGIN_EXPORT #endif extern C PLUGIN_EXPORT MStatus initializePlugin(MObject obj) { MFnPlugin plugin(obj, devkit.demo, 1.0, Any); return plugin.registerCommand(helloDevkit, HelloDevkitCmd::creator); } extern C PLUGIN_EXPORT MStatus uninitializePlugin(MObject obj) { MFnPlugin plugin(obj); return plugin.deregisterCommand(helloDevkit); }MPxCommand是命令插件基类doIt返回MS::kSuccess表示执行成功。MGlobal::displayInfo输出到 Maya 脚本编辑器用来验证命令真的跑起来了。PLUGIN_EXPORT在 Windows 下展开为__declspec(dllexport)保证入口符号可见。registerCommand的第一个参数是脚本里调用的命令名第二个参数是创建函数。deregisterCommand在卸载时注销名字要和注册时一致。这个骨架不依赖 UI适合先验证 DEVKIT 的头文件、库和运行时是否对齐。3.3 编译第一个最小插件并加载构建完成后不要直接双击.mll。用 Maya 的脚本编辑器或mayapy加载才能看到错误信息。加载时路径用正斜杠或双反斜杠Windows 路径里的单反斜杠在 MEL 字符串里会被当转义。先用loadPlugin加载绝对路径再调用命令最后unloadPlugin卸载。如果加载失败Maya 脚本编辑器会给出模块名和错误码比在文件管理器里双击强得多。第一次加载建议在空场景里做避免场景里已有同名命令导致冲突。import maya.cmds as cmds plugin_path rD:\Build\maya2018_plugins\Release\helloDevkit.mll # 先卸载旧版本避免同名命令残留 if cmds.pluginInfo(helloDevkit, queryTrue, loadedTrue): cmds.unloadPlugin(helloDevkit) cmds.loadPlugin(plugin_path) cmds.helloDevkit() # 验证命令已注册后再卸载 print(cmds.pluginInfo(helloDevkit, queryTrue, loadedTrue)) cmds.unloadPlugin(helloDevkit)loadPlugin接收绝对路径时不受MAYA_PLUG_IN_PATH影响适合第一次验证。pluginInfo查询加载状态避免重复加载报“已加载”。cmds.helloDevkit()调用注册的命令脚本编辑器里应该出现hello from Maya 2018.6 devkit。最后unloadPlugin用来验证注销入口也正常。如果loadPlugin报 126 或找不到模块先看依赖 DLL不要反复改源码如果加载成功但命令不存在回到initializePlugin的注册名和导出宏。4. 避坑与排查Maya 开发套件最常见的五类翻车DEVKIT 的坑大多不在“会不会写 C”而在路径、位数、工具集和运行时混用。下面五条是血泪经验里出现频率最高的按现象、原因、解决拆开写。每条都建议先在最小工程里复现再回到自己的插件工程里对照别一上来就改业务代码。4.1 现象编译报找不到maya/MFnPlugin.h现象是 CMake 配置能过一构建就报fatal error C1083: 无法打开包括文件: “maya/MFnPlugin.h”。原因通常有两个包含路径指到了 DEVKIT 根目录而不是include目录或者解压时多套了一层目录实际头文件在Maya2018_6_DEVKIT\Maya2018_6_DEVKIT\include\maya。解决时先Test-Path确认include\maya\MFnPlugin.h存在再把 CMake 里的MAYA_INCLUDE_DIR指到include源码里保留#include maya/MFnPlugin.h。不要为了绕过报错把maya这一级去掉后面换别的头文件还会再撞一次。4.2 现象链接阶段报LNK2019或LNK2001现象是编译通过链接时提示MFnPlugin::registerCommand或MGlobal::displayInfo无法解析的外部符号。原因多半是库没链上、链了错位数的库或者 Debug 工程去链 Release 库。解决时先确认工程是 x64 Release再把Foundation.lib和OpenMaya.lib的绝对路径写进target_link_libraries。如果机器上同时有 2018.6 和别的版本 DEVKIT检查 CMake 缓存里的MAYA_DEVKIT有没有指回旧目录。改完路径后删掉D:\Build\maya2018_plugins重新生成别在旧缓存上反复构建。4.3 现象Maya 加载.mll报 126 或“找不到指定的模块”现象是loadPlugin返回错误脚本编辑器提示模块加载失败错误码常见 126。原因通常是.mll依赖的 DLL 不在PATH里或者插件是 Debug 版、依赖调试版 CRT。解决时用dumpbin /dependents helloDevkit.mll看依赖列表确认Foundation.dll等能从当前 Maya 的bin找到。把 Maya 2018.6 的bin放到PATH前面重新开一个终端启动 Maya。插件本身统一用 Release 构建不要拿 Debug 版去试加载。依赖第三方库时把第三方 DLL 放到插件同目录或单独目录并把这个目录加进PATH。4.4 现象插件能加载但命令不存在现象是loadPlugin没报错执行helloDevkit却提示“不是可识别的命令”。原因可能是initializePlugin没有正确导出或者注册名和调用名不一致也可能是旧版本插件已经加载、同名命令被占用。解决时先看.mll是否导出了入口符号用dumpbin /exports检查有没有initializePlugin和uninitializePlugin。再核对registerCommand的第一个参数和脚本调用名。调试阶段每次加载前先unloadPlugin确认旧版本已经卸掉。工程里如果有多个插件注册同名命令换一个前缀别在加载顺序上赌。4.5 现象升级到 2018.6 后旧插件崩溃或行为异常现象是旧插件在旧环境能跑换了 2018.6 DEVKIT 后加载崩溃或者命令执行到一半异常。原因常见是头文件、导入库、运行时三者没有一起换只更新了 DEVKIT 头文件.mll还链着旧库也可能是构建缓存里残留旧对象文件。解决时把MAYA_DEVKIT、MAYA_LOCATION、构建目录全部对齐到 2018.6删掉构建目录重新生成。插件工程里不要混用不同更新号的include和lib。如果第三方依赖也升级了先编一个最小命令插件验证 DEVKIT 本身再逐步加回业务模块别一次把所有变量都改掉。5. 插件加载与运行配置从.mll到 Maya 插件管理器编译出.mll只是拿到一个文件Maya 能不能稳定找到它、加载它、卸载它靠的是插件路径和运行时路径。MAYA_PLUG_IN_PATH管“去哪儿找插件”PATH管“插件依赖的 DLL 去哪儿找”两者别混。插件管理器里能看到插件名不代表依赖都齐有时候列表里显示加载成功一执行命令就崩问题往往在运行时 DLL 版本。下面把插件目录、依赖搜索和脚本自动加载分开讲方便把调试环境固定下来。5.1 插件目录与MAYA_PLUG_IN_PATH插件输出目录不要每次构建都换。固定一个D:\Build\maya2018_plugins\out把.mll复制进去或者让 CMake 的OUTPUT_NAME和输出目录直接指过去。然后把out加进MAYA_PLUG_IN_PATHMaya 插件管理器里就能按文件名加载不用每次写绝对路径。环境变量可以是分号分隔的多个目录调试阶段只保留当前工程目录避免同名插件从别的目录被加载。插件名和文件名尽量一致加载时少一层猜测。# 固定插件输出目录并追加到 MAYA_PLUG_IN_PATH $env:MAYA_PLUG_IN_PATH D:\Build\maya2018_plugins\out;D:\Work\maya2018_hello\plugins # 启动 Maya 前确认变量已生效 $env:MAYA_PLUG_IN_PATH -split ; | ForEach-Object { Test-Path $_ }MAYA_PLUG_IN_PATH用分号分隔多个目录顺序会影响同名插件的命中结果。Test-Path用来确认目录真实存在路径写错时 Maya 不会主动提示“这个目录不存在”只会表现为插件列表里找不到。调试阶段不要把整个构建目录加进去Release、Debug、CMakeFiles都在里面时插件管理器可能列出多个同名项。固定out目录后构建脚本每次覆盖复制加载路径就稳定了。5.2 依赖 DLL 与运行时搜索路径.mll依赖的 DLL 分两类Maya 自带的运行时 DLL以及插件自己带的第三方 DLL。Maya 自带的靠MAYA_LOCATION\bin第三方靠插件同目录或单独依赖目录。Windows 加载 DLL 时按PATH顺序找当前工作目录也可能影响结果。常见做法是把第三方 DLL 放到.mll同目录再把该目录加到PATH前面或者用构建脚本把依赖复制到out\deps启动 Maya 前统一加路径。不要依赖“本机能跑就行”换一台机器很可能因为缺一个 DLL 直接 126。# 在 Visual Studio 命令提示符里查看插件依赖 dumpbin /dependents D:\Build\maya2018_plugins\out\helloDevkit.mll # 查看导出入口确认 initializePlugin 存在 dumpbin /exports D:\Build\maya2018_plugins\out\helloDevkit.mll | findstr initializePlugindumpbin /dependents列出.mll依赖的 DLL缺少哪个就去补哪个不要靠猜。dumpbin /exports用来确认入口符号是否导出findstr过滤出initializePlugin这一行。如果导出列表里没有入口函数回到源码检查导出宏和extern C。如果依赖列表里出现调试版 CRT说明构建配置还是 Debug改回 Release 重新生成。第三方 DLL 的位数也要一致32 位 DLL 放到 64 位插件旁边照样加载失败。5.3 用脚本自动加载与卸载调试插件时手动点插件管理器容易漏步骤写一个加载脚本更稳。脚本先卸载旧版本再加载新构建再执行一次测试命令。卸载时用插件名不要用文件路径避免同一个插件从不同路径加载出两个实例。脚本里加异常捕获加载失败时把错误信息打出来别让 Maya 只弹一个笼统提示。这个脚本可以放在工具架或启动脚本里但调试阶段建议手动执行确认每一步的返回值。import maya.cmds as cmds PLUGIN_NAME helloDevkit PLUGIN_PATH rD:\Build\maya2018_plugins\out\helloDevkit.mll def reload_hello_devkit(): if cmds.pluginInfo(PLUGIN_NAME, queryTrue, loadedTrue): cmds.unloadPlugin(PLUGIN_NAME) try: cmds.loadPlugin(PLUGIN_PATH) cmds.helloDevkit() print(plugin loaded:, cmds.pluginInfo(PLUGIN_NAME, queryTrue, pathTrue)) except RuntimeError as exc: print(load failed:, exc) raise reload_hello_devkit()PLUGIN_NAME是注册名PLUGIN_PATH是绝对路径两者分开是为了卸载时不受路径变化影响。pluginInfo查询加载状态已加载就先卸载。loadPlugin失败会抛RuntimeError捕获后打印再抛出避免脚本静默失败。pluginInfo(... pathTrue)能确认 Maya 实际加载的是哪个文件排查“改了没生效”时很有用。这个脚本不依赖插件管理器界面适合反复构建、反复加载的调试节奏。6. 装完怎么验证跑通三条检查和一个最小插件闭环验证不要只看“CMake 生成成功”。生成成功只说明路径语法没错真正跑通要过三关头文件能编译、导入库能链接、.mll能在 Maya 里加载并执行命令。我一般按固定顺序走先做静态检查再构建再加载任何一关失败就停在那关查不带着问题往下走。下面三条检查可以直接抄成脚本最后用一个最小命令插件闭环。检查项命令通过标准头文件Test-Path $env:MAYA_DEVKIT\include\maya\MFnPlugin.h返回 True导入库Test-Path $env:MAYA_DEVKIT\lib\OpenMaya.lib返回 True运行时where.exe Foundation.dll第一条在 Maya 2018.6 的bin下插件入口dumpbin /exports helloDevkit.mll能看到initializePlugin命令闭环cmds.loadPlugin(...)后执行cmds.helloDevkit()脚本编辑器输出成功信息# 三段式验证路径、构建、加载前检查 $env:MAYA_DEVKIT D:\SDK\Maya2018_6_DEVKIT $env:MAYA_LOCATION D:\Apps\Maya2018 $env:MAYA_PLUG_IN_PATH D:\Build\maya2018_plugins\out $env:PATH $env:MAYA_LOCATION\bin;D:\Build\maya2018_plugins\out;$env:PATH Test-Path $env:MAYA_DEVKIT\include\maya\MFnPlugin.h Test-Path $env:MAYA_DEVKIT\lib\OpenMaya.lib where.exe Foundation.dll这段脚本把验证需要的变量一次设好Test-Path检查 DEVKIT 头文件和库where.exe检查运行时 DLL 的命中顺序。PATH里把 Maya 的bin和插件输出目录放在前面避免旧版本抢先。验证时不要只看Test-Path返回 True还要看where.exe的第一条路径是不是当前 Maya 2018.6如果第一条是别的目录就把对应的bin从PATH里移走。检查通过后再启动 Maya用第 5 章的加载脚本执行一次命令看到输出信息才算闭环。从那以后我每次配 Maya 2018.6 的 DEVKIT都强制走一遍“DEVKIT 路径、Maya 运行时路径、插件输出路径”三行检查再编译最小命令插件不先碰业务代码。这个习惯不花几分钟但能挡掉大部分 126、LNK2019和“命令不存在”的返工。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站