如何在没有 __uuidof 的情况下从 C 调用 DXGI
How to call DXGI from C without __uuidof
我不确定如何在没有仅限 C++ 的 __uuidof 运算符的情况下获取 DXGI GUID。整个 MSDN 代码都使用了它。我也不确定在 C 中调用 OO Windows API 的语法。
我已经在 MSDN 和此处进行了检查,但一无所获。
#ifdef __cplusplus
CreateDXGIFactory(__uuidof(IDXGIFactory), (void **)&factory);
factory->EnumAdapters(0, &adapter);
adapter->EnumOutputs(0, &output);
#else // C version, not correct AFAIK
?? CreateDXGIFactory(&IID_IDXGIFactory, (void **)&factory);
?? IDXGI_EnumAdapters(factory, 0, &adapter);
?? IDXGI_EnumOutputs(adapter, 0, &output);
#endif
第一个有效,但 C 版本因未解决的 DXGI 相关外部(EnumAdapters 和 EnumOutputs 以及 IID_DXGIFactory)而失败。
这应该没问题:
#define COBJMACROS
#include <dxgi.h>
void test()
{
IDXGIFactory* factory;
if (SUCCEEDED(CreateDXGIFactory(&IID_IDXGIFactory, (void**) &factory)))
{
IDXGIAdapter* adapter;
if (SUCCEEDED(IDXGIFactory_EnumAdapters(factory, 0, &adapter)))
{
// ...
}
}
}
我不确定如何在没有仅限 C++ 的 __uuidof 运算符的情况下获取 DXGI GUID。整个 MSDN 代码都使用了它。我也不确定在 C 中调用 OO Windows API 的语法。
我已经在 MSDN 和此处进行了检查,但一无所获。
#ifdef __cplusplus
CreateDXGIFactory(__uuidof(IDXGIFactory), (void **)&factory);
factory->EnumAdapters(0, &adapter);
adapter->EnumOutputs(0, &output);
#else // C version, not correct AFAIK
?? CreateDXGIFactory(&IID_IDXGIFactory, (void **)&factory);
?? IDXGI_EnumAdapters(factory, 0, &adapter);
?? IDXGI_EnumOutputs(adapter, 0, &output);
#endif
第一个有效,但 C 版本因未解决的 DXGI 相关外部(EnumAdapters 和 EnumOutputs 以及 IID_DXGIFactory)而失败。
这应该没问题:
#define COBJMACROS
#include <dxgi.h>
void test()
{
IDXGIFactory* factory;
if (SUCCEEDED(CreateDXGIFactory(&IID_IDXGIFactory, (void**) &factory)))
{
IDXGIAdapter* adapter;
if (SUCCEEDED(IDXGIFactory_EnumAdapters(factory, 0, &adapter)))
{
// ...
}
}
}