是否有小伙伴像我一样,遇到了udf编译时报错的问题,找了各种各样的方法都没有办法解决,这里为大家提供一种新思路
先总结一下内容:1、配置环境变量;2、怎么确定环境变量配置成功;3、可能不是环境变量的问题;

(先说明,本人刚入门cfd,对这些概念也不太懂,如有说得不对的地方请各位大佬多多指教。)

问题1:环境变量的配置
我用的fluent16.0,然后当时是能编译udf的(直接改txt文件的后缀为.cpp)。

后来看到各种教程里大神们用的vs,于是我就去下载了一个vs2019(后来发现并不需要额外下载,电脑里本来有内置的vs)。然后。。。原来的udf就不能编译了,报错“ The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”

搜索了一下发现是环境变量的问题,在网上尝试了很多方法,那些方法描述的情况总是和我的情况有细微差别,反正最终也没修改成功。

后来有人告诉我,一般ansys的版本要比vs新,于是我卸载了ansys16.0,重装了2020 r1.

装好ansys2020 r1后,我没有额外设置环境变量,有时or有些udf是可以编译的,但是其他时候又会报错:“ The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”再后来就编译不了了。(这个情况我一直没弄明白是怎么回事,现在回想起来,可能是ansys2020 r1本来和vs2019就是搭配的,可以不用配置环境变量,但是由于我的udf写错了,所以一直报错)

但是我一直以为是环境变量的问题,于是想尽办法去配置,后来找到一个又无脑又简单的方法,好像是博主“硫酸亚铜”写的一个小工具:一键设置环境变量.exe;(大家可以找一下这个软件,我忘记是在哪里下载的了,还有一个配套的视频教程,大神真厉害),双击–生成文件–生成一个注册表文件,打开注册表,就配置好了。(其实在这里我也遇到了问题,生成的是一个path.txt文件,和双击udf.bat生成的那个path.txt文件一样,可能是需要自己把那些环境变量添加进去?后来我重新点了好几次这个小工具,就成功生成注册表文件了)

但是还是报错,这时我又看到一个说法,怎么判断你的环境变量配置成功了呢? win+r,cmd,回车,cl,回车,nmake,回车,出来的是这样子的话,就是配置成功了,如果显示:找不到批处理文件之类的,那就是没有成功。在这里插入图片描述
问题2:udf格式问题
于是我惊讶地发现原来环境变量已经配置好了,于是我又回去仔细看了报错内容,发现,在“Error at Node 0: The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”前几行,有一堆关于udf_name的报错:
udf_names.c(10): error C2143: ???: ???;??(???)
udf_names.c(10): error C2085: ??heat_source??: ???�¦�???
udf_names.c(11): error C2085: ??porosity_function1??: ???�¦�???
udf_names.c(12): error C2085: ??porosity_function2??: ???�¦�???
udf_names.c(13): error C2085: ??udf_data??: ???�¦�???
udf_names.c(13): error C2143: ???: ???;??(???=???)
udf_names.c(15): warning C4138: ???/??
udf_names.c(16): warning C4138: ???
/??
udf_names.c(17): warning C4138: ???*/??
udf_names.c(22): error C2065: ??udf_data??: ��???
NMAKE : fatal error U1077: ??“D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.EXE”??: ???0x2??
Stop.
(注意,这些报错是在build时就出现的)
产生这些提示的原因,是因为udf文件名那一行,有别的文字或空格
DEFINE_XXX(X,X,X)这一行,逗号之间是不能有空格的,而且后面也不能用/**/添加注释。那些多余的空格和注释删掉后,就成功地编译了udf。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐