MinGW库中的windows api函数InitCommonControlsEx()在哪里

Posted

技术标签:

【中文标题】MinGW库中的windows api函数InitCommonControlsEx()在哪里【英文标题】:Where is the windows api function InitCommonControlsEx() in MinGW libraries 【发布时间】:2012-01-27 15:42:11 【问题描述】:

我将 MinGW 用于 32 位窗口。我使用 windows 通用控件,所以我必须从 windows API 调用 InitCommonControlsEx()。 MinGW 链接器无法找到此函数,即使我明确链接到 Commctrl.lib(或 minGW .a 版本 libcomctl32.a)。

在哪里可以找到 InitCommonControlsEx() 的正确导入库?

【问题讨论】:

您的意思是链接到 Comctl32.lib,而不是 commctrl.lib? MinGW 系统有不同的命名约定,但我试图找出正确的名称是什么。 正确的名字是libcomctl32.a,如果你做objdump -t libcomctl32.a就可以看到。您确定这是链接器错误吗?你有什么版本的MinGW?你用什么命令行来编译和链接? 我在 g++ 命令行上指定了“-Wl-llibcomctl32.a”。如果我在我的机器上输入 libcomctl32.a 的完整路径,它就可以工作(例如,库中的函数符号被解析)。库搜索算法有问题,还是我使用了错误的选项? 【参考方案1】:

如果你想链接libcomctl32.a,那么你需要省略'lib' & '.a' 然后将其转换为-l

例子:

-lcomctl32 

这仅适用于 gnu gcc 及其衍生产品(Cygwin、Mingw、Clang 等)。 但是在 MSVC 和 C-Builder 上,库名没有被转换,所以你可以直接将 Comctl32.lib 传递给链接器。

【讨论】:

以上是关于MinGW库中的windows api函数InitCommonControlsEx()在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Windows 中的 Libmtp (msys/mingw):运行问题

Windows API 函数名称中的“Ex”代表啥?

Windows下的异常处理和堆栈跟踪(MinGW/gcc)

mingw中的时间函数

MingW缺少Win32加密API的一些功能

mingw std::thread 与 Windows API