【问题标题】:win32++ library sample code results in undefined reference errorwin32++ 库示例代码导致未定义引用错误
【发布时间】:2022-01-05 21:48:30
【问题描述】:

我知道我昨天已经问过这个问题,但是这个帖子中建议的解决方案:

error LNK1120: 1 unresolved external - VS13 C

没用:/

我收到此错误:

CMakeFiles\testproject.dir/objects.a(main.cpp.obj): In function 
`Win32xx::LoadCommonControls()':
PATH/lib/Win32xx891/include/wxx_wincore.h:2844: undefined reference to 
`__imp_InitCommonControls'
PATH/lib/Win32xx891/include/wxx_wincore.h:2849: undefined reference to 
`__imp_InitCommonControls'

尝试运行 win32++ 库中的示例代码时。我已经尝试添加

#pragma comment(lib, "comctl32.lib")

按照我提到的线程中的建议发送到我的标题,但这不起作用。他们还说,您可以通过在我的程序参数中添加 -L -lcomctl32 链接 comctl32 库来解决它,该库似乎没有加载并导致问题(我认为这就是如何做到的,如果我错了,请纠正我)。那也没有帮助。如果您知道问题出在哪里,请帮助我。

编辑:

步骤:

  • 创建项目 (c++ 14)
  • 下载win32++库文件
  • 用 cmake 添加它们(我调用了 include_directories(),够了吗?)
  • https://pastebin.com/w59ibVEZ
  • 以“-lcomctl32”作为程序参数运行程序
  • 翻录

【问题讨论】:

  • -L -lcomctl32 这是错误的。它添加了搜索路径./-lcomctl32。删除-L,试试-lcomctl32
  • @drescherjm 虽然并非所有编译器都支持该编译指示,但 msvc 并不是唯一支持它的编译器
  • 请显示minimal reproducible example,包括完整的编译器命令行

标签: c++ winapi mingw


【解决方案1】:

#pragma comment(lib, "comctl32.lib") 用于 MSVC,它在 MinGW(或 GCC)中没有任何作用。

符号InitCommonControls在MinGW自带的libcomctl32.a中定义,所以你只需要使用链接器标志-lcomctl32进行链接。

确保告诉 CMake 它是链接器标志而不是编译器标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多