Visual Studio 2015 - 控制链接顺序
Visual Studio 2015 - control the linking order
我有一个较早的 Visual Studio 2010 项目。最近我 re-gained 对它感兴趣,所以我将它转换为 VS 2015 项目。一切顺利,没有报告任何问题,编译成功。
现在,问题是创建的 .obj 必须是第一个被 linked 的东西(输出必须是多重启动兼容的,因此我必须确保multiboot header 是应该的)。
对于较旧版本的 VS,这是以一种有点老套的方式完成的:必须是第一个文件的名称以“__”开头(那时我就像个孩子,并不总是考虑如何做正确的事情,只要他们工作)。当然,这不再有效了。
那么,如何告诉 linker 某个 link 订单是预期的?或者,在问题的上下文中,如何使用 VS 2015 构建符合多重启动标准的二进制文件?
编辑:我已经选择了一个正确的答案,但我想指出,如果有人遇到同样的问题,还有另一种方法。您可以为多重启动指定一个部分名称 header(我们称之为 .boot),然后将其与文本部分合并(参见 https://msdn.microsoft.com/en-us/library/wxz26dz2.aspx)。要了解如何为 multiboot header 指定段名称,请阅读汇编程序的文档(或使用 header 生成 .obj 的文档)。
仍然有点老套,但我会考虑使用 #pragma init_seg(lib)。
我有一个较早的 Visual Studio 2010 项目。最近我 re-gained 对它感兴趣,所以我将它转换为 VS 2015 项目。一切顺利,没有报告任何问题,编译成功。
现在,问题是创建的 .obj 必须是第一个被 linked 的东西(输出必须是多重启动兼容的,因此我必须确保multiboot header 是应该的)。
对于较旧版本的 VS,这是以一种有点老套的方式完成的:必须是第一个文件的名称以“__”开头(那时我就像个孩子,并不总是考虑如何做正确的事情,只要他们工作)。当然,这不再有效了。
那么,如何告诉 linker 某个 link 订单是预期的?或者,在问题的上下文中,如何使用 VS 2015 构建符合多重启动标准的二进制文件?
编辑:我已经选择了一个正确的答案,但我想指出,如果有人遇到同样的问题,还有另一种方法。您可以为多重启动指定一个部分名称 header(我们称之为 .boot),然后将其与文本部分合并(参见 https://msdn.microsoft.com/en-us/library/wxz26dz2.aspx)。要了解如何为 multiboot header 指定段名称,请阅读汇编程序的文档(或使用 header 生成 .obj 的文档)。
仍然有点老套,但我会考虑使用 #pragma init_seg(lib)。