1

背景:我们使用最初在 VAX/OpenVMS 上开发的非常古老的 Fortran 代码 (F77),它允许自定义链接 - 即您可以在库中定义多个符号,但可以强制链接器使用特定符号.

使用 VS2010 和 Intel Fortran 2013,我正在寻找一种方法让链接器在它存在于多个库中时强制它使用来自特定库的符号(即 MYSUBROUTINE)。

我有一个混合的 C++/Fortran 项目。内部开发的库不是我自己的,因此删除未使用的子程序并非易事。因此,为什么我要寻找一种方法来强制 VS2010/Intel Fortran 2013 链接器使用特定的子例程。

我想这个问题不是我们独有的,因为许多遗留代码库,特别是那些有很多 Fortran 的代码库,必须有这个问题。

4

1 回答 1

1

搜索库 (.lib) 时,链接器将使用它找到的第一个匹配符号。以明确定义的顺序搜索库。要让特定符号优先使用不同的库,请在链接命令行的前面指定库(在 Visual Studio 中的可执行项目的链接器 > 输入 > 附加依赖项中前面列出)

如果您想要选择跨多个库的多个子例程,那么您将需要使用不同的方法,例如解压缩库并选择您想要的例程的目标代码作为单独的步骤。

请注意,在搜索符号时,目标文件优先于库。

多重定义的符号仅适用于对象文件 (.obj) 中的符号。

于 2013-09-24T05:21:04.323 回答