obs配置文件加载:bool OBSBasic::InitBasicConfig(); OBS认证信息加载,貌似还没有实现吗?
void Auth::Load(){
OBSBasic *main = OBSBasic::Get();
const char *typeStr = config_get_string(main->Config(), "Auth", "Type");
if (!typeStr) typeStr = "";
main->auth = Create(typeStr);
if (main->auth) {
if (main->auth->LoadInternal()) {
main->auth->LoadUI();
}
}
}
在obs的QT UI中添加一个新的QDialog,之后,编译提示如下信息:
错误 1 error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject(void)const " (?metaObject@Widget@@UBEPBUQMetaObject@@XZ)
错误 2 error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall Widget::qt_metacast(char const *)" (?qt_metacast@Widget@@UAEPAXPBD@Z)
错误 3 error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Widget::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Widget@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
错误 4 fatal error LNK1120: 3 个无法解析的外部命令
这是因为通过vs2017添加的对话框,只在vs的工程里面,并没有加入到cmake的工程里面,吧对应的cpp和h文件加入到 .\obs-studio\UICMakeLists.txt 的里面就行了。比如我的是DlgLogin.h 和DlgLogin.cpp
set(obs_SOURCES
${obs_PLATFORM_SOURCES}
${obs_libffutil_SOURCES}
../deps/json11/json11.cpp
obs-app.cpp
api-interface.cpp
DlgLogin.cpp // 这个是我添加的UI对应的class
window-basic-main.cpp
window-basic-stats.cpp
....)
set(obs_HEADERS
${obs_PLATFORM_HEADERS}
${obs_libffutil_HEADERS}
../deps/json11/json11.hpp
obs-app.hpp
platform.hpp
DlgLogin.h // 这个是我添加的UI对应的class
window-main.hpp
window-basic-main.hpp
window-basic-stats.hpp
....)
set(obs_UI
......
forms/OBSRemux.ui
forms/DlgLogin.ui // 这个是我添加的UI
forms/OBSAbout.ui)
加入这三行到makelist,重新编译工程,就可以了。