链接 Scaleform 以在 Qt Creator 中构建应用程序

Posted

技术标签:

【中文标题】链接 Scaleform 以在 Qt Creator 中构建应用程序【英文标题】:Link Scaleform to build applications in Qt Creator 【发布时间】:2017-07-22 07:44:03 【问题描述】:

我想创建一个应用程序并在其中使用 Scaleform。我使用 Qt Creator,所以我在 .pro 中添加了 Scaleform 的包含和库,但在编译时出现错误。 这是我在 .pro 中添加的内容(有些行可能没有用,但只是为了测试,因为无论如何它都无法工作):

INCLUDEPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src"
INCLUDEPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src/GFx"
INCLUDEPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK   4.5/Src/Kernel"
INCLUDEPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src/Render"
INCLUDEPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Include"

DEPENDPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src"
DEPENDPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src/GFx"
DEPENDPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src/Kernel"
DEPENDPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Src/Render"
DEPENDPATH += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Include"

LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfx.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfx_air.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfx_as2.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfx_as3.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/3rdParty/pcre/Lib/Win32/Msvc14/Debug/pcre.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/3rdParty/curl-7.29.0/lib/Win32/Msvc14/Debug/libcurl.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxexpat.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxplatform_d3d9.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxplatform_d3d11.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxplatform_gl.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxrender_d3d9.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxrender_d3d11.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxrender_gl.lib"
LIBS += "C:/Program Files (x86)/Autodesk/Scaleform/GFx SDK 4.5/Lib/Win32/Msvc14/Debug/libgfxsound_fmod.lib"

在我的 .cpp 文件中:

#include "GFx_Kernel.h"
#include "GFx.h"  //causes the errors
#include "GFx_Renderer_D3D9.h"

这会导致以下错误:

libgfx.lib(Amp_Message.obj) : error LNK2019: unresolved external symbol _deflate referenced in function "public: virtual bool __thiscall Scaleform::GFx::AMP::Message::Compress(class Scaleform::Array<unsigned char,2,struct Scaleform::ArrayDefaultPolicy> &)const " (?Compress@Message@AMP@GFx@Scaleform@@UBE_NAAV?$Array@E$01UArrayDefaultPolicy@Scaleform@@@4@@Z)
...
...
fatal error LNK1120: 54 unresolved externals

通常,这是由于缺少库或未使用与应用程序相同的编译器编译的库,但在这里,所有内容都是在 MSVC2015 中构建的,32 位。 但是,我拥有的 libgfx.lib 的日期为 07.09.2016,并且我没有从 Scaleform SDK 构建它,因为显然没有构建它的项目(而可以重建其他库,如 libgfxexpat.lib)。

我认为问题可能是由于这个原因。我错了吗? Scaleform SDK中是否有任何项目(我安装了sf_4.5.32_win_vc14_lib.exe)来构建该库?

【问题讨论】:

【参考方案1】:

_deflate 来自zlib,请确保将其链接到您的应用程序中。您的输出声称有 54 个未解析的符号 - 我假设这是因为您还没有链接 Scaleform 的任何其他依赖项。

Scaleform 发行版有几种不同的风格——“lib”版本不提供源代码,因此您无法重新编译它们的库。如果您想更改编译选项、进行修改或调试,这很有用,但除此之外,您应该能够使用“lib”库制作功能齐全的应用程序。

【讨论】:

以上是关于链接 Scaleform 以在 Qt Creator 中构建应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 调试器未显示返回值

Scaleform 与 Stage3d

用于游戏开发的 Autodesk Scaleform [关闭]

scaleform 4.4.30 关于opengl的问题

使用 Scaleform 进行游戏资产渲染,而不仅仅是 UI

Havok Vision 游戏引擎:在 Visual Studio 中为 Android 编译 Autodesk Scaleform