c++ - 具有多个 IsEqualGuid 定义的 OLE32 链接错误
问题描述
当我尝试在 Windows 上使用以下代码编译基于 COM 的应用程序时,传递-lole32
给我的编译器时出现以下错误:
代码:
#include <shobjidl.h>
#include <windows.h>
#include <stdio.h>
const IID IID_ITaskbarList3 = {0xea1afb91, 0x9e28, 0x4b86, {0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf}};
void *revery_register_icon_progress_win32() {
ITaskbarList3 *tbl;
CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
&IID_ITaskbarList3, (void**)&tbl);
return (void *)tbl;
}
错误:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/guiddef.h:161: multiple definition of `IsEqualGUID'
C:/Users/Admin/AppData/Roaming/npm/node_modules/esy/node_modules/esy-bash/.cygwin/usr/x86_64-w64-mingw32/sys-root/mingw/lib/libole32.a(dwzns00301.o):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
我不确定如何解决这个问题,因为错误似乎不是我的代码,而是库本身。如果文件完全为空,我仍然会收到此错误。我能做些什么来解决这个问题吗?
编辑:我已经确定这是由于在我的程序中链接 DWrite 和 OLE32 引起的,即如果我只使用-ldwrite
or-lole32
编译,程序编译并且工作正常,但如果我同时包含两者,我最终会出现上述编译错误。这是一个问题,因为我的程序中需要两者。
解决方案
推荐阅读
- java - Spring boot 无法评估表达式方法抛出 'org.hibernate.LazyInitializationException' 异常。使用 getter,ManyToMany 关系
- html - 具有动态内容的打字机效果
- reactjs - 反应日期范围计算(营业时间)
- javascript - 如何在文本框中使用自动完成功能从存储过程中获取数据?
- postgresql - 小表上的仅索引扫描非常慢
- javascript - 堆栈图表未显示每个单独堆栈的相关数据
- reactjs - TypeError:当我使用useState(函数组件)时,对象不是函数或其返回值不可迭代
- reactjs - Azure 身份平台 - 使用 ReactJS 客户端针对自定义 WebAPI 端点验证登录用户
- postgresql - 在postgres中从末尾截断字母?
- android - 生成签名的apk时,Android Studio在aar中丢失了so文件