【发布时间】:2020-08-09 13:18:57
【问题描述】:
到目前为止,我尝试使用我的 DirectX 11 项目来加载纹理:
我下载了 DirectXTex 源,将源文件包含到我的项目中并尝试编译,但出现错误。我从这些头文件中得到错误:WICTextureLoader.h、DDSTextureLoader.h 和 DirectXTex.h。错误来自头文件,而不是我自己的代码。然后,我尝试了WICTextureLoader11.h 和DDSTextureLoader11.h,我得到的错误是undefined reference to the function CreateWICTextureFromFile()...(或相同,但使用DDS)。
我认为,这里的问题可能是编译器(我使用 Clang/GCC)找不到.lib 文件?但是,这里有些人提到您可以将源文件放入您的文件夹中,一切都会好起来的。好像,对我来说不太行。如果这是问题所在,有没有办法在不通过 VS 安装和其他东西的情况下获取二进制文件 (.lib)?
【问题讨论】:
-
使用 C++ 编译的二进制文件与不同的编译器或在某些情况下使用同一编译器的不同版本通常是不安全的(比 2015 年旧的 Visual Studio 版本都是二进制不兼容的)。但是,如果这是一个 Windows OS api,它可能是
c -
现在我查看源代码https://github.com/microsoft/DirectXTex 这是一个具有完整源代码的
c++项目。您应该使用CMake生成 MinGW makefiles 项目并使用 MinGW 构建该项目 -
@drescherjm 感谢您的提示。所以我尝试下载 Cmake 并做了下一个:我使用 Cmake GUI 并选择生成 MinGW Makefile。但是由于我对这两个都不熟悉,所以我不知道下一步该做什么。我有一个包含 Makefile 的文件夹,我试图运行它,但出现了很多错误。所以我不确定我应该怎么做。
-
我有一个包含 Makefile 的文件夹,我试图运行它,但出现了很多错误。 很可能微软没有使这个库与其他编译器。我的建议是使用 Visual Studio 2019,避免将代码移植到其他编译器的痛苦。
-
@drescherjm DirectXTex 的 github 页面声明“此代码旨在使用 ... clang 构建”。我不明白的另一件事是,正如 Chuck Walbourn 本人在这里回答的那样,您可以将两个 header/cpp 文件都放入项目中,一切都应该没问题。我会尝试用 cmake/makefile 再次做一些事情,直到我得到答案,如果我最终再次安装 VS(我真的不喜欢)会很伤心。
标签: c++ directx directx-11