链接 Abaqus/标准用户子程序的问题

Posted

技术标签:

【中文标题】链接 Abaqus/标准用户子程序的问题【英文标题】:Problem Linking Abaqus/Standard User Subroutines 【发布时间】:2021-05-03 10:49:22 【问题描述】:

我已将 Abaqus 2020 链接到英特尔 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

【问题讨论】:

谷歌搜索你的错误信息很快就会出现community.intel.com/t5/Intel-Fortran-Compiler/… - 这有帮助吗? 感谢您提供链接,它对我有用并在下面发布答案。 【参考方案1】:

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

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

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

/iface:cref /names:小写

在 VS 项目属性中,它位于: Fortran -> 外部程序 -> 名称大小写解释 -> "小写 (/names:lowercase)

【讨论】:

以上是关于链接 Abaqus/标准用户子程序的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Abaqus 中运行连续作业时只编译一次用户子程序

在Abaqus中运行连续作业时,仅编译一次用户子例程

abaqus学习笔记-abaqus与umat调用基本原理

求助ABAQUS子程序运行错误

Abaqus 幅值曲线—与时间相关的函数定义

ABAQUS子程序编译