Code::Blocks 链接选项
Code::Blocks Linking Options
我在 Code::Blocks 17.12 中设置 SDL,在 Windows 上使用 MinGW,我看到了 linker 的一组奇怪的选项。我对此很陌生,所以它可能很明显。加载一个项目,进入顶部的 Project 选项卡,点击 Properties,然后点击 Project's build options。如果单击 Linker settings,您会发现两件事。一个包含 link 的库列表,而另一个包含命令本身中提供给 linker 的选项列表。这是 window 的截图:
我发现删除 link 库根本不会打乱构建,而删除 linker 选项会打乱一切。这是只有 SDL 才会发生的事情吗?这两个部分有什么区别?这些标志告诉 linker 做什么?
好的,这是一个非常简单的错误。在做了一些研究之后,我在论坛上找到 this post 来解释这个问题。库必须以完全相同的顺序加载!要回答我的第一个问题,SDL 确实有一些奇怪之处,但这个问题可能发生在任何一组库文件中。其次,这两个部分在链接静态库文件时基本上完全相同,但链接器选项为您提供更多控制权,并让您指定链接器可能使用的其他标志。最后,这些标志告诉链接器查看提供的目录并将它们嵌入到您的程序中,从而允许您在最终可执行文件中使用库中存在的功能。
这是一张显示我所做的事情的图片。使用与之前提供的相同规范,构建 运行 完美,并且我能够成功地 运行 最终程序。
我在 Code::Blocks 17.12 中设置 SDL,在 Windows 上使用 MinGW,我看到了 linker 的一组奇怪的选项。我对此很陌生,所以它可能很明显。加载一个项目,进入顶部的 Project 选项卡,点击 Properties,然后点击 Project's build options。如果单击 Linker settings,您会发现两件事。一个包含 link 的库列表,而另一个包含命令本身中提供给 linker 的选项列表。这是 window 的截图:
我发现删除 link 库根本不会打乱构建,而删除 linker 选项会打乱一切。这是只有 SDL 才会发生的事情吗?这两个部分有什么区别?这些标志告诉 linker 做什么?
好的,这是一个非常简单的错误。在做了一些研究之后,我在论坛上找到 this post 来解释这个问题。库必须以完全相同的顺序加载!要回答我的第一个问题,SDL 确实有一些奇怪之处,但这个问题可能发生在任何一组库文件中。其次,这两个部分在链接静态库文件时基本上完全相同,但链接器选项为您提供更多控制权,并让您指定链接器可能使用的其他标志。最后,这些标志告诉链接器查看提供的目录并将它们嵌入到您的程序中,从而允许您在最终可执行文件中使用库中存在的功能。
这是一张显示我所做的事情的图片。使用与之前提供的相同规范,构建 运行 完美,并且我能够成功地 运行 最终程序。