本文摘要(由AI生成):
本文介绍了在ANSYS Fluent中编译UDF时遇到的问题及解决方法。首先,文章提到文件未找到的问题,并强调记住文件所在路径的重要性。其次,详细描述了利用环境变量和Visual Studio进行编译的过程,以及遇到的错误提示,如缺少头文件和链接错误。针对这些问题,作者提供了修改头文件路径的解决方法,并最终实现了成功编译。文章最后总结了解决问题的步骤,并建议使用文件查找工具以提高效率。
前两天换了Fluent 2022 R2和Visual Studio 2022,结果UDF编译时出现一些状况。感谢万能的互联网,简单处理后终于将问题解决了。
在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,环境变量也已经配置好了,但是编译的时候出了问题。
kernel32.lib
文件有问题,前面是乱码,也不知到底是什么问题。猜测可能是找不到此文件。在电脑中搜索文件kernel32.lib,这里找到了此文件,看起来似乎不是缺少文件,而是没有找到文件。记住此文件所在的路径。C:\Program Files (x86)\Windows Kits\10\Lib
(注意,不同的电脑路径可能有所差异),如下图所示。重新启动Fluent进行编译,天下太平.
话说ANSYS连这点儿乱码都搞不定,似乎对不起CAE大厂的身份啊,都多少年了还解决不了。
之前一直使用硫酸亚铜大神的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的安装路径下搜索到。
#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进行文件路径查找。
(完)