首页/文章/ 详情

解决Visual Studio 2022编译UDF时的两个小问题

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
4月前浏览6917

本文摘要(由AI生成):

本文介绍了在ANSYS Fluent中编译UDF时遇到的问题及解决方法。首先,文章提到文件未找到的问题,并强调记住文件所在路径的重要性。其次,详细描述了利用环境变量和Visual Studio进行编译的过程,以及遇到的错误提示,如缺少头文件和链接错误。针对这些问题,作者提供了修改头文件路径的解决方法,并最终实现了成功编译。文章最后总结了解决问题的步骤,并建议使用文件查找工具以提高效率。


前两天换了Fluent 2022 R2和Visual Studio 2022,结果UDF编译时出现一些状况。感谢万能的互联网,简单处理后终于将问题解决了。

1 Visual Studio编译的问题

在Fluent中利用Visual Studio编译UDF,出现下面的错误提示。

udf_names.c
# Linking libudf.dll because of makefile user_nt.udf udf_names.obj temp.obj
Microsoft (R) Incremental Linker Version 14.33.31630.0
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: ????????????kernel32.lib??
NMAKE : fatal error U1077: ??"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\bin\HostX86\x64\link.EXE"??: ???????0x450??
Stop.

Done.

刚安装的Visual Studio 2022,环境变量也已经配置好了,但是编译的时候出了问题。

  • 检查UDF.bat文件,确保路径修改没有问题。
  • 从错误源头上找文章,貌似是kernel32.lib文件有问题,前面是乱码,也不知到底是什么问题。猜测可能是找不到此文件。在电脑中搜索文件kernel32.lib,这里找到了此文件,看起来似乎不是缺少文件,而是没有找到文件。记住此文件所在的路径。
  • 新建环境变量LIB,指定变量值为C:\Program Files (x86)\Windows Kits\10\Lib(注意,不同的电脑路径可能有所差异),如下图所示。

重新启动Fluent进行编译,天下太平.

话说ANSYS连这点儿乱码都搞不定,似乎对不起CAE大厂的身份啊,都多少年了还解决不了。

2 用编译UDF工具编译

之前一直使用硫酸亚铜大神的UDF编译工具(https://www.cnblogs.com/liusuanyatong/p/11259591.html)编译UDF,不过最近出现了一些问题。

问题是换用Fluent2022版本后,使用gcc编译不了UDF,就是点击下图中的编译按钮不起作用。但是换用2022R1又是能够正常编译的,目前不知问题在哪里。因为没有源代码,所以就无能为力了,只能寄希望于硫酸大神有空瞅瞅了。或者哪天等我有空了,再自己搞一个新的。

利用Visual Studio是有响应的,不过有错误提示。

错误提示如下图所示。

错误内容如下。

C:\Program Files\ANSYS Inc\v222\fluent\fluent22.2.0\cortex\src\cx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
C:\Program Files\ANSYS Inc\v222\fluent\fluent22.2.0\cortex\src\cx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
LINK : fatal error LNK1181: 无法打开输入文件“udf_names.obj”
C:\Program Files\ANSYS Inc\v222\fluent\fluent22.2.0\cortex\src\cx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
C:\Program Files\ANSYS Inc\v222\fluent\fluent22.2.0\cortex\src\cx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
LINK : fatal error LNK1181: 无法打开输入文件“udf_names.obj”

提示的意思是在源文件cx.h中包含的头文件string_safe.h找不到。这个string_safe.h文件是存在的,可以在Fluent的安装路径下搜索到。

  • 打开cx.h文件,如下图所示,找到#include "string_safe.h",换用绝对路径
  • 继续编译,又有错误。这次是需要修改mem.h文件中的hash2.h文件路径,将其改成绝对文件路径

如下图所示进行修改。注意Fluent路径下有很多个mem.h,不要改错文件了。

  • 再编译。这次要修改hase2.h文件中的hash.h路径。

改完后如下图所示。

  • 继续编译。这次要改的是hash.h文件中的std.h路径

改完后如下图所示。

  • 继续编译。这次要改的是slide.h文件中的hash2.h路径。

改完后如下图所示。

再次编译,成功完成。至此,天下太平。

不过不能使用Gcc的话还是有缺憾。

总结一下就是:

1.找到并打开cx.h文件,将string_safe.h的路径改为绝对路径。
2.找到并打开hash2.h,将mem.h的路径改为绝对路径。
3.找到并打开hash2,将hash.h的路径改为绝对路径。
4.找到并打开文件hash.h,将文件std.h改为绝对路径
5.找到并打开slide.h文件,将其中的头文件hash2.h改为绝对路径

文件查找比较耗费时间,推荐使用Everything进行文件路径查找。


(完)



来源:CFD之道
FluentUDF
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-10-14
最近编辑:4月前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2556粉丝 11193文章 726课程 27
点赞
收藏
作者推荐
未登录
1条评论
locycor
签名征集中
1年前
你好,我按照你的教程去修改cx.h文件,但是没办法保存怎么办啊
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈