【问题标题】:Creating VS solution without debug dll for Maya plug-in?为 Maya 插件创建没有调试 dll 的 VS 解决方案?
【发布时间】:2025-12-25 03:55:11
【问题描述】:

我正在尝试为具有自定义版本 Qt 的软件 (Autodesk Maya) 编译自定义插件。该软件提供了一个带有 Qt 文件的 devkit。它还在其安装位置包含 Qt 内容。

现在我正在尝试通过 cmake-gui 生成一个 VS 解决方案:

  • 当我使用 devkit 中的 Qt 内容时,二进制文件丢失,例如Qt5Core.dll
  • 当我从安装位置使用 Qt 时,调试二进制文件丢失,例如Qt5Cored.dll

我有两个问题:

  • 为什么 Maya devkit 不包含二进制文件?那么 devkit 的意义何在?
  • 为什么 Maya 位置不包含调试二进制文件?我是否必须以某种方式禁用对 cmake 中调试二进制文件的引用?

【问题讨论】:

  • @VladimirBershov 是的,我已经确保只使用自定义 Qt 版本中的包含和库。我不确定 qmake 的东西。我只用 cmake 和 Visual Studio 编译插件。该插件不包含我能看到的与 qmake 相关的任何内容。 Here 它是...
  • 或许你可以看看欧特克开源工具:OpenSource

标签: qt cmake maya


【解决方案1】:

问题是这样的:

https://help.autodesk.com/view/MAYAUL/2020/ENU/?guid=__developer_Maya_SDK_MERGED_Working_with_Qt_Using_Qt_in_Plug_ins_html

这仍然会在 Windows 上留下一个潜在的问题区域。 Qt的QList 模板类提供了可以创建和销毁 Qt 的内联方法 对象。因为这些方法是内联的,如果它们被调用 为调试而构建的插件代码,创建的任何对象或 删除将使用调试版本中的内存分配器 Microsoft 的 C 运行时库。如果在 Maya 中调用方法, 他们将使用 C 运行时库的发布版本。因此它是 可能会出现在 Maya 中分配对象的情况 使用发布运行时库并在插件中使用 调试运行时库,反之亦然。自发布和调试 Microsoft 的 C 运行时库的版本与每个版本不兼容 否则,这可能会导致崩溃。

目前,QList 是我们所知道的唯一一个 Qt 类 这种失败的可能性,但其他 Qt 模板类可能 表现出类似的问题。迄今为止,唯一已知的解决方法是 要么避免在代码中使用 Qt 模板类,要么 仅在 Windows 上以发布模式构建插件

【讨论】: