【问题标题】:How do I link to a library with Code::Blocks?如何使用 Code::Blocks 链接到库?
【发布时间】:2011-08-17 07:01:09
【问题描述】:

C++ GUI Tutorial: undefined reference to TextOut

我有同样的问题,但我是编程和 Code::Blocks 的新手,我想使用 GDI32 库。我该如何安装它?我很困惑,因为我可以使用 windows.h 标头,但是像 TextOut 这样的一些功能不可用。

【问题讨论】:

    标签: c++ winapi codeblocks


    【解决方案1】:

    gdi32 库已经安装在您的计算机上,没有它,很少有程序可以运行。您的编译器(如果安装正确)通常会附带一个导入库,链接器使用它来在您的程序和系统中的文件之间进行绑定。 (在极少数情况下,您的编译器没有为系统库提供导入库,您需要下载 Microsoft Windows 平台 SDK。)

    与 gdi32 链接:

    这将可靠地与 MinGW-gcc 一起用于所有系统库(如果您也使用任何其他编译器,它应该可以工作,但我不能谈论我没有尝试过的事情)。你也可以写库的全名,但是写libgdi32.a 比gdi32 没有优势,除了更多的类型工作。
    如果它出于某种原因不起作用,您可能必须提供不同的名称(例如,对于 MSVC,该库被命名为 gdi32.lib)。

    对于某些奇怪位置或项目子文件夹中的库,您需要提供正确的路径名(单击“...”按钮以打开文件选择对话框)。

    【讨论】:

    • 顺便说一句,OP 应该更改整个项目而不是单个目标的链接器设置。这可以通过单击Project build options 窗口内的项目名称来完成(屏幕截图上的My Project)。
    • 嗨,我在链接 SDL 和 SDL_image 时遇到了问题,谢谢这个例子对我帮助很大。顺便说一句,在一些例子中,我看到了像“-lSDL”和“ -lSDL_image”,但这对于命令行来说是可以的。 CodeBlocks 为您添加了“-l”,因此只需添加库名称,就像您在 GDI32 中所做的那样。他们应该解释这一点,因为周围有很多菜鸟并且感到困惑。 (我是一个)谢谢你
    • 谢谢,达蒙。使用这个解决方案,我在我的项目中链接了 gdi32 库。我的开发操作系统是window7,IDE是代码块。它解决了我的以下错误:“未定义对 getstockobject 4@ 的引用”
    【解决方案2】:

    猜想,您使用 Code::Blocks 创建了一个控制台应用程序项目。这样的项目并没有在 GDI 的东西中链接,因为控制台应用程序一般不打算做图形,而TextOut 是一个图形功能。如果您想使用 GDI 的功能,您应该创建一个 Win32 Gui 项目,它将为您设置链接到 GDI。

    【讨论】:

    • 我不相信这是真的。我在控制台应用程序中使用 opengl(win32 窗口创建),它仍然可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多