软件版本:fluent 15.0 + vs 2013
UDF 链接到fluent有两种方式,解释方式(interpreted)或者编译(compiled)方式。
解释方式不需要编译器,因此比较方便,但它速度慢。而且如果写的代码包括了除了udf.h之外的第三方库,很有可能出现错误。即使把第三方库放入udf头文件目录下,语法错误也难以解决,很劳神。使用这种方式不需要配置visual studio,但除非确定不会用到第三方库函数,否则的话还是配置vs,使用compiled方式更好。
编译方式速度快,而且能使用第三方库。提前需要配置好环境变量。而且这个很重要。
目前为止,compiled udf文件时,build出现的错误都是因为环境变量没配置好发生的。低级错误甚至包括在目录的files与(x86)之间少了一个空格,而导致环境变量配置失败。在找到这个错误时,感觉眼睛都瞎了。
build过程中,.obj文件已经好了,但是仍不能得到dll文件,错误提示为不能识别的外部。这是连接过程出现了问题。亲测有用的解决办法是,从command中打开fluent。
用管理员身份打开x64 的vs 命令符提示。输入命令fluent.exe启动ansys。问题迎刃而解。
此外,还有一个可能出现的连接问题,那就是配置环境变量的时候,lib选择过多,有版本冲突,会编译出错。因此注意lib环境变量设置的时候,不要贪多。出现了libcmt.lib 2019 2001的错误,最后解决的方法是,将include\改成了\include\x64,具体说来,就是设置到了include文件夹下的下一目录。(另外,在解决这个错误之前,花了很长时间在vs项目设定上找错误,但其实和那没关系。)
udf的源代码文件只支持.c。这是很显然的。但是它的加载面板上的cpp很迷惑人,以至于我不断地使用c++文件去挑战bug >_>。这也是一个低级错误。
出现少了basetsd.h头文件的提示,解决办法是,下载