如何在Code::Blocks中链接到一个库?

22

C++ GUI 教程:TextOut未定义的引用

我同样遇到了这个问题,但我是一个新手,使用的是 Code::Blocks,并且想要使用 GDI32 库。如何安装它?我非常困惑,因为我可以使用 windows.h 头文件,但一些函数,比如 TextOut 是不可用的。

3个回答

50

gdi32库已经安装在您的计算机上,有些程序缺少它将无法运行。如果您的编译器已正确安装,则通常会带有导入库,链接器使用此库将您的程序与系统文件进行绑定。(如果您的编译器未提供系统库的导入库,则需要下载 Microsoft Windows 平台 SDK。)

要与gdi32进行链接:

enter image description here

这将可靠地适用于所有系统库的MinGW-gcc(如果使用其他编译器也应该可以,但我无法对我没有尝试过的事情发表评论)。您还可以写出库的完整名称,但写libgdi32.agdi32相比没有任何优势,只是更加繁琐。
如果由于某种原因它不能正常工作,您可能需要提供其他名称(例如,对于MSVC,该库的名称为gdi32.lib)。

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


顺便提一下,原帖作者应该更改整个项目的链接器设置,而不是单个目标。这可以通过在“项目构建选项”窗口中点击项目名称(屏幕截图中的“My Project”)来完成。 - HolyBlackCat
嗨,我在链接SDL和SDL_image时遇到了问题,谢谢你的示例,它帮助了我很多。顺便说一下,在一些示例中,我看到了像“-lSDL”和“-lSDL_image”这样的链接方式,但这对于命令行来说是可以的。CodeBlocks会为您添加“-l”,因此只需添加库名称,就像您添加GDI32一样。他们应该解释清楚这一点,因为有很多新手会感到困惑(我曾经也是其中之一)。谢谢。 - HoNgOuRu
谢谢,Damon。使用这个解决方案,我在我的项目中链接了gdi32库。我的开发操作系统是Windows 7,IDE是CodeBlock。它解决了我的以下错误:“undefined reference to getstockobject 4@”。 - Pankaj Vavadiya

0

你可以使用项目win32 gui api创建新的,它有默认的添加库-lgdi32 -luser32 -lkernel32 -lcomctl32 -mwindows或在你的项目中添加库-mwindows,这对我很有效。


-1
猜测您使用Code::Blocks创建了一个“控制台应用程序项目”。这样的项目不会链接GDI内容,因为控制台应用程序通常不打算进行图形操作,而TextOut是一个图形函数。如果您想使用GDI的功能,您应该创建一个“Win32 Gui项目”,它将为您设置链接GDI。

1
我不相信这是真的。我正在使用带有控制台应用程序的OpenGL(Win32窗口创建),它仍然可以工作。 - I Phantasm I

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接