我正在将应用程序从 D3D7 移植到 D3D10。 尽管 D3D10 的 C 接口存在,但在编译/链接时似乎不可见。 D3D7 版本使用C 接口,我没有看到任何不同。
以下是我对 D3D10 文件的构建命令:
"arguments": ["D:\\Programme\\Visual Studio 2022\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX64\\x86\\cl.exe", "/c", "/nologo", "/Zi", "/FS", "/Fdbuild\\windows\\x86\\debug\\compile.trng2.pdb", "/W3", "/Od", "/std:c11", "/MTd", "/Isrc", "/DXAUDIO2_HELPER_FUNCTIONS", "/DWIN32_LEAN_AND_MEAN", "/DNOMINMAX", "/D_CRT_SECURE_NO_WARNINGS", "/DCINTERFACE", "/DDO_LOG", "/D_DEBUG", "/D_USE_MATH_DEFINES", "/IE:\\REDACTED\\build\\.packages\\z\\zlib\\v1.3.1\\55fd28c48bc34b35b89c569e2dd7bcce\\include", "/IE:\\REDACTED\\build\\.packages\\x\\xaudio2redist\\1.2.11\\163bc5c6e48e49d98ea66f724aede6bf\\include", "/Fobuild\\.objs\\REDACTED\\windows\\x86\\debug\\REDACTED\\specific\\d3d10\\d3d10info.c.obj", "REDACTED\\specific\\d3d10\\d3d10info.c"],
如您所见,我指定了 C11 以及
CINTERFACE
,但我收到了链接器错误和编译器警告。
d3d10info.c(18):警告 C4013:“IDXGIFactory_EnumAdapters”未定义;假设 extern 返回 int
d3d10info.c.obj:错误LNK2019:函数_EnumAdapters中引用的无法解析的外部符号_IDXGIFactory_EnumAdapters
您还需要定义
COBJMACROS
来公开方便的宏,例如 IDXGIFactory_EnumAdapters(factory,int,void**)
d3d.h
来说是不需要的(D3D < 9), but seems to be needed for d3d10.h