使用 Blackmagic ATEM SDK 获取:无法解析的外部符号 CLSID_CBMDSwitcherDiscovery

问题描述 投票:0回答:1

我正在尝试开发一个应用程序来控制我的ATEM视频切换器,但在开始使用SDK时遇到困难(可在https://www.blackmagicdesign.com/developer/product/atem获取)

我收到以下链接错误:

error LNK2001: unresolved external symbol CLSID_CBMDSwitcherDiscovery

我查了一下,它在 BMDSwitcherAPI.h 中的定义如下

EXTERN_C const CLSID CLSID_CBMDSwitcherDiscovery;

我想我已经包含了所有必需的库等,如下所示

#include "include\BMDSwitcherAPI.h"

#include <cstdio>
#include <map>
#include <string>
#include <utility>
#include <vector>

#include <conio.h>
#include <comutil.h>
#include <atlbase.h>`

我尝试设置切换器发现直接来自他们的示例代码:

CComPtr<IBMDSwitcherDiscovery>   switcherDiscovery;
HRESULT   result;

result = switcherDiscovery.CoCreateInstance(CLSID_CBMDSwitcherDiscovery, NULL, CLSCTX_ALL);
if (result != S_OK)
{
fprintf(stderr, "A Switcher Discovery instance could not be created.  The Switcher drivers may not be installed.\n");
}

有人有任何建议或想法可以帮忙吗?

如上所述,我希望它返回 S_OK 或 Null,这意味着驱动程序未安装(它们确实是)

c++ blackmagic-design
1个回答
0
投票

在 Ken White 的帮助下一切都很好!

只需要使用这些行链接 CMake 中的库(意味着您可以轻松更改文件的位置)

SET(SWITCHERS_SDK_INCLUDE "include/BMDSwitcherAPI_i.cpp")
add_library(BMDSwitcherAPI ${SWITCHERS_SDK_INCLUDE})

并更新 target_link_libraries 部分以包含该库:

target_link_libraries(... BMDSwitcherAPI ...)

现在可以编译了,所以这是克服的一个巨大障碍!

© www.soinside.com 2019 - 2024. All rights reserved.