fortran - 链接 Abaqus/Standard 用户子例程时出现问题

标签 fortran intel-fortran abaqus intel-oneapi

我将 Abaqus 2020 链接到 Intel oneAPI ifort 编译器,并且它运行正常,直到我遇到此问题。当我尝试使用 /iface:cref 时,“错误 LNK2019:函数umat.R 中引用了无法解析的外部符号 ROTSIG”。有没有什么快速的方法可以解决这个问题。我使用VS 2019进行编译。错误提示如下

Begin Linking Abaqus/Standard User Subroutines
Creating library standardU.lib and object standardU.exp
swell.obj : error LNK2019: unresolved external symbol ROTSIG referenced in function umat.R
standardU.dll : fatal error LNK1120: 1 unresolved externals
Abaqus Error: Problem during linking - Abaqus/Standard User Subroutines.
This error may be due to a mismatch in the Abaqus user subroutine arguments.
These arguments sometimes change from release to release, so user subroutines
used with a previous release of Abaqus may need to be adjusted.
Abaqus/Analysis exited with errors

最佳答案

此问题主要由 Abaqus 和其他依赖/iface:cref 以及 oneAPI ifort 编译器版本 2021.1.1、2021.1.2 和 2021.2 的 Windows 用户面临。

此问题的原因是/iface:cref 应将所有名称(过程、数据)设置为小写,但这种情况没有发生。因此,目标文件和库中的名称默认为大写。因此,当 Abaqus 和其他程序在链接时查找您的函数时,引用将无法解析

我可以使用选项/names:lowercase 解决此问题。

/iface:cref/names:小写

在 VS 项目属性中,它位于: 福特兰语言 -> 外部过程 -> 名称大小写解释 -> “小写 (/names:lowercase)

关于fortran - 链接 Abaqus/Standard 用户子例程时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67367668/

相关文章:

compiler-errors - 如何使用ifort编译器编写makefile?

python - 从变形的测试对象中提取节点坐标(abaqus-python)

python - 如何使用 abapy 提取不同的 Field 输出数据?

mesh - 如何在 Avizo 中细化某些特定表面?

macos - MATLAB mex 不在 macOS 上寻找编译器 gfortran

fortran - 架构 x86_64 : gfortran 的 undefined symbol

matlab - 如何在 Fortran mex 文件中实现 A = sparse(I, J, K) (来自三元组的稀疏矩阵)?

cmake - 如何让 CMake 构建具有 MPI 支持的 Fortran 程序?

fortran - "too many records in I/O statement"错误的原因不明

fortran - 随机数生成器(RNG/PRNG)返回种子的更新值