c++ - VS2010/Intel Fortran 找不到多重定义的符号

标签 c++ visual-studio-2010 linker fortran intel-fortran

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

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

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

我想这个问题不是我们独有的,因为许多遗留代码库,尤其是那些使用大量 Fortran 的代码库,一定有这个问题。

最佳答案

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

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

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

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

关于c++ - VS2010/Intel Fortran 找不到多重定义的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972748/

相关文章:

c++ - 使用在另一个 BPL 中实现的组件安装 BPL

c++ - 我想通过 GUI 上的按钮打开 Msconfig

c++ - 它->首先给出什么类型?

c++ - 如果编译器安装了服务包,C++ 运行时是否需要服务包?

c - 链接中 undefined reference 错误

c++ - Ruby 扩展代码中的段错误

c++ - vs2010 上的 Boost Process 错误

c++ - 为 arm 设置 visual studio express

c++ - 在 Mac 上构建的 HPX 出现链接器错误

c++ - 当我使用的库使用的库发生变化时,我的可执行文件是否需要重新链接?