吾生有涯 学海无涯
析模有界 知识无界

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

内容纲要

前两天换了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 FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC14.33.31629binHostX86x64link.EXE"??: ???????0x450??
Stop.

Done.

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

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

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

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

2 用编译UDF工具编译

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

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

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

错误提示如下图所示。

错误内容如下。

C:Program FilesANSYS Incv222fluentfluent22.2.0cortexsrccx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
C:Program FilesANSYS Incv222fluentfluent22.2.0cortexsrccx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
LINK : fatal error LNK1181: 无法打开输入文件“udf_names.obj”
C:Program FilesANSYS Incv222fluentfluent22.2.0cortexsrccx.h(18): fatal error C1083: 无法打开包括文件: “string_safe.h”: No such file or directory
C:Program FilesANSYS Incv222fluentfluent22.2.0cortexsrccx.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之道

赞(10) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《解决Visual Studio 2022编译UDF时的两个小问题》
文章链接:https://www.topcfd.cn/21410/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 1

评论前必须登录!

 

  1. #-49

    感谢作者,解决了我的问题

    hustcer2年前 (2023-06-12)

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册