UDF 编译疑难问题

合集下载

Fluent 常见问题

Fluent 常见问题

1 现在用FLUENT的UDF来加入模块,但是用compiled udf时,共享库老是连不上?解决办法:1〉你的计算机必须安装C语言编译器。

2〉请你按照以下结构构建文件夹和存放文件:libudf/src/*.c (*.c为你的源程序);libudf/ntx86/2d(二维为2d,三维为3d)/makefile(由makefile_nt.udf改过来的)libudf/ntx86/2d(二维为2d,三维为3d)/user_nt.udf(对文件中的SOURCE,VERSION,P ARALLEL_NODE进行相应地编辑)3〉通过命令提示符进入文件夹libudf/ntx86/2d/中,运行C语言命令nmake,如果C预言编译器按装正确和你的源程序无错误,那么此时会编译出Fluent需要的库文件(*.lib)这时再启动Fluent就不会出错了。

2 在使用UDF中用编译连接,按照帮助文件中给出的步骤去做了,结果在连接中报错“系统找不到指定文件”。

udf 文件可能不在工作目录中,应该把它拷到工作目录下,或者输入它的全部路径.3 这个1e-3或者1e-4的收敛标准是相对而言的。

在FLUENT中残差是以开始5步的平均值为基准进行比较的。

如果你的初值取得好,你的迭代会很快收敛,但是你的残差却依然很高;但是当你改变初场到比较不同的值时,你的残差开始会很大,但随后却可以很快降低到很低的水平,让你看起来心情很好。

其实两种情况下流场是基本相同的。

由此来看,判断是否收敛并不是严格根据残差的走向而定的。

可以选定流场中具有特征意义的点,监测其速度,压力,温度等的变化情况。

如果变化很小,符合你的要求,即可认为是收敛了。

一般来说,压力的收敛相对比较慢一些的。

是否收敛不能简单看残差图,还有许多其他的重要标准,比如进出口流量差、压力系数波动等等尽管残差仍然维持在较高数值,但凭其他监测也可判断是否收敛。

最重要的就是是否符合物理事实或试验结论。

Fluent无法编译UDF文件的常见解决方法

Fluent无法编译UDF文件的常见解决方法

解决Fluent无法编译UDF文件的问题方法1对于Fluent加载UDF时出现"The UDF library you are trying to load(libudf)is not complied for parallel use on the current platform (win64)"错误,主要是没有正确设置本机VS安装路径,导致udf编译器无法成功编译c代码。

解决方法:1. 找到Fluent内的UDF.bat编译器。

这里以我自己2019R2的64位学生版为例,在D:\Program Files\ANSYS Inc\ANSYS Student\v194\fluent\ntbin\win64下找到udf.bat用记事本打开2. 将本机Visual Studio的安装路径写入。

这里以我自己VS2015为例,将本机visual studio 2015的安装路径赋值给MSVC_DEFAULT,由于VS2015的版本代号是14.0,因此将"%ProgramFiles(x86)%\Microsoft Visual Studio 14.0"替换为"D:\Program Files (x86)\Microsoft Visual Studio 14.0",保存文件即可,如图1~2所示更改前更改后方法2对于某些低版本的VS,以上操作可能不足以解决问题,需要手动配置环境变量,具体方法如下:1.找到Fluent安装路径下的setenv.exe,双击运行选择是,路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\setenv.exe2.右键“我的电脑”—属性—高级—环境变量,添加用户变量,以VS2013为例INCLUDE=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;LIB=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\kernel32.libPath=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;。

Fluent UDF compiled [UDF编译]错误解决办法

Fluent UDF compiled [UDF编译]错误解决办法

WinXP下使用UDF编译(compiled UDF)FLUENT UDF在interpreted时不需要vc++是可以的,但如果要用compiled,那么必须安装vc++了。

Fluent UDF 在compiled时点击build时出现错误:'nmake' 不是内部或外部命令,也不是可运行的程序。

点击load时则出现不可编译的错误:Opening library "libUDF"...Error: open_UDF_library: 系统找不到指定的文件。

Error Object: ()原因:环境变量有问题。

可能是安装vc++时没有勾选【设置环境变量】。

解决方法:需要设置环境变量,我的电脑-属性-高级-环境变量添加 include、lib、path和MSDevDir 环境变量,环境变量路径与安装vc++的路径有关。

如果不会设置,那么最简单的方法就是重装vc++ ,在安装过程的倒数第二步勾选设置环境变量(对于VC6.0)。

如果设置好环境变量了,build时不再出现/'nmake' 不是内部或外部命令,也不是可运行的程序。

/ 但点load时仍出现Opening library "libUDF"...Error: open_UDF_library: 系统找不到指定的文件。

Error Object: ()那么可能是因为没有加入头文件(Header files)UDF.h。

加入source files 和header files 后重新build 再load 就OK啦。

另外,在build是若出现错误:UDF_names.c(40) : fatal error C1071: unexpected end of file found in comment。

一种原因是:UDF定义了多个宏命,有一些不需要,加了 /* */ 引起的错误。

解决的方法就是删除这些多余的宏,只保留需要的。

(完整版)FluentUDF编译出错解决方法总结

(完整版)FluentUDF编译出错解决方法总结

Fluent UDF编译出错解决方法总结Fluent是一款非常成熟的CFD软件,因此得到广泛使用。

它提供了C语言接口UDF,用户可以根据自己需要扩展Fluent的不足。

然而,UDF编译往往给大家带来了很大的麻烦,因为Fluent编译需要借助VC。

同样这个问题困扰我很久,今天终于解决了,顺便总结一下,以便日后方便查询,呵呵。

我就遇到两类问题:1.'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件这个问题大家遇到的最多,网上的解释也很多,我也在重复一遍。

出现这个错,我们需要按照如下修改环境变量变量名include变量值D:\Program Files\Microsoft Visual Studio 9.0\VC\include变量名lib变量值D:\Program Files\Microsoft Visual Studio 9.0\VC\lib变量名path变量值D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;D:\Program Files\Microsoft Visual Studio 9.0\VC\bin;D:\Program Files\Microsoft Visual Studio 9.0是我安装Microsoft Visual Studio 2008 的文件夹。

2.LINK: fatal erro LNK1104: cannot open file 'kernel132.lib'这个问题困扰我很久,因为以前按照1修改环境变量就OK了,可这个实在不知道是什么错误,在百度上搜了很长时间没找到解决办法,都想放弃了。

今天无意试试google,结果找到了答案!因此以后要养成用google搜问题的习惯!解决办法还是修改环境变量,提示不能打开'kernel132.lib',我们就想办法找到他并把它添加到环境变量里lib里,我的电脑里'kernel132.lib'在C:\Program files\Microsoft SDKs\Windows\v6.0A\Lib\kernel32.lib,于是把这个路径添加到lib这个环境变量里,问题就解决了。

UDF的编译的心得

UDF的编译的心得

UDF的编译的心得最近编写了一个udf程序在解释模式下运行正常可以的到理想的结果但是采用编译模式运行总是不能将数据输出到fluent控制台中后来检查发现可以将数据输出到文件中看了下面的文章恍然大悟原来在编译模式下将数据输出到控制台不能用printf命令要用Message命令遂引述如下关于UDF的编译的心得刚刚接触UDF的时候我大多用的的是InterpretedUDF这样很方便也很简单但是到了后来编的越来越复杂不得不用CompiledUDF而且有些UDF只能Compiled但是过程却复杂多了.我在这里把过程讲一下希望对新手有帮助.一开始看帮助说是createadirectory都不知道directory是什么其实很简单就是文件夹把这个文件夹放在你case所在的目录下命名为libudf名字是什么无所谓然后在libudf 下建立两个子文件夹分别命名为src和ntx86把你的源程序也就是.c放进src 在ntx86下再建子文件夹命名为2d3d或是并行计算可同理参阅帮助然后在2d 文件夹下把Fluent.Incfluent6.srcmakefile_nt.udf和Fluent.Incfluent6.srcuser_nt.udf拷进去将makefile_nt.udf重命名为makefile接着修改user_nt.udf里的内容要改成以下格式:SOURCESSRCudfexample.c这里是有的源程序名字VERSION2d是二维还是三维PARALLEL_NODEnone有没有并行最后点开始-程序-附件-命令提示符进入DOS界面访问libudfntx862d然后敲nmake这样就OK了.然后在FLUENT里load这个libudf就行了.当然也有简单的方法在CompiledUDF里点addsourcecodes你找到你的源程序加入然后build再LOAD就行了如果在在原来的文件夹下已经有libudf文件夹那你把它删了再进行上面的步骤或者你修改libudfname比如改成lib这样也OK了.还有在UDF中要在控制窗口显示一些值比如说压力值用InterpretedUDF时就得用printf语句而在CompiledUDF时就得用Message语句二者不能互用.引自/dispbbs_163_17527_4_1.html补充message系列的函数参数格式和c语言中的printf格式是完全相同的因此只要将解释模式下的printf 直接改成Message即可作为编译程序运行。

fluent udf编译出错解决办法

fluent udf编译出错解决办法

UDF编译出错,久久不能解决,在网上查阅了很多解决办法,均不能凑效,直到看到天乐树的博文“ANSYS FLUENT 12.x 13.x版下使用Visual Studio 2010编译UDF的设置方法”,终于设置成功。

但是在读此博文的时候其实也遇到了一点小问题,我结合我的设置经历和大家分享一点经验,希望大家少走弯路。

我用的是FLUENT 16.0和VS2010。

找到fluent安装目录下的udf.bat(C:\Program Files\ANSYS Inc\v121\fluent\ntbin\win64\udf.bat)用文本编辑器修改udf.bat:添加echo trying to find MS C compiler, version 10.0....set MSVC_DEFAULT=%ProgramFiles(x86)%\Microsoft Visual Studio 10.0if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%if not "%MSVC%" == "" goto msvc_env100set MSVC_DEFAULT=%ProgramFiles%\Microsoft Visual Studio 10.0if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%if not "%MSVC%" == "" goto msvc_env100:msvc_env100set MSVC_VERSION=100call "%MSVC%\VC\vcvarsall.bat" amd64gotoms_c_end(添加了这段)注:如果Visual Studio安装到其他盘,(可能)需要修改路径,比如装到D盘Program Files下,便这样添加:set MSVC_DEFAULT=d:\Program Files\Microsoft Visual Studio 10.0(这儿其实容易理解错,红色部分应该是自己设置的安装路径,比如我的安装路径是D:\programfiles\VS2010(programfiles是我在D盘建的一个文件夹,VS2010是我自己建的安装Microsoft Visual Studio2010的文件夹),那么这个语句应该是set MSVC_DEFAULT=D:\programfiles\VS2010)if exist "%MSVC_DEFAULT%\VC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT% if not "%MSVC%" == "" goto msvc_env100:msvc_env100set MSVC_VERSION=100call "%MSVC%\VC\vcvarsall.bat" amd64gotoms_c_end我觉得我说的应该简单易懂了,祝大家顺利解决问题。

Fluent安装在64位系统后编译中出现的的常见错误与应对方法

Fluent安装在64位系统后编译中出现的的常见错误与应对方法这几天在64位windows系统下装fluent,使用UDF编译时碰到各种错误,花了一天功夫,终于基本解决,贴上来跟大家分享下1.exceed无法安装exceed版本太低,不支持64位系统,使用exceed 11或更高级版本2、编译时出现'nmake' is not recognized as an internal or external command没有安装VC或者装了但环境变量没有设置好。

安装Visual Studio 2008(2010和2005应该也行),安装时选择完全安装,实在空间不够,就选自定义安装,其中64位编译器一定要勾上。

安装完成后设置环境变量(参考了傲雪论坛的gearboy的方法)(1)、按以下顺序点击:开始——程序——Fluent Inc products——Fluent 6.3.26,运行该菜单下的Set Enviroment;(2)、(如果第一次安装Visual Studio就选择了完全安装,这步可以省略,只要安装完成后启动下Visual Studio即可)右击“我的电脑”——属性——高级——环境变量,在这个菜单下,上方是用户变量,下方是系统变量,现在修改用户变量。

新建一个变量命名为“Include”,在Variable values中粘贴以下部分(具体目录按照自己电脑安装情况可能需要修改,如果Visual Studio安装在默认目录下,则直接粘贴):C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include按同样的方法增加变量如下LibC:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64;C:\Program Files (x86)\Microsoft Visual Studio9.0\VC\atlmfc\lib\amd64;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64LibpathC:\WINDOWS\\Framework64\v3.5;C:\WINDOWS\\Framework64\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib\amd64;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64Pathc:\fluent.inc\ntbin\win64;C:\Program Files (x86)\Microsoft Visual Studio9.0\VC\bin\amd64;C:\WINDOWS\\Framework64\v3.5;C:\WINDOWS\\Framework64\v3.5\Microsoft .NET Framework 3.5 SP1;C:\WINDOWS\\Framework64\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files(x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin;注:32系统可以安装6.0版本的VC,安装时选择“注册环境变量”即可,这样比较省事3、经过第2步的处理后,nmake的错误没了,但出现stdout等三个宏被重定义的问题按理不应该有这种错误,我目前没有很好的解决方法。

fluent udf 编译与解释

主题:Fluent UDF编译与解释近年来,计算流体力学(CFD)领域得到了迅速的发展,并成为了工程学、地球科学、医学等领域中一个重要的研究工具。

在进行CFD仿真时,用户自定义函数(User Defined Function,UDF)作为一种重要的边界条件和源项模型,可以有效地增强FLUENT软件的功能。

但是,与普通的FLUENT软件中的命令不同,UDF需要用户自行编写程序,然后通过编译器将其转换成FLUENT软件可识别的格式。

对于大部分工程师和研究人员来说,编写、编译和解释UDF仍然是一个具有一定挑战性的任务。

本文将围绕Fluent UDF编译与解释展开,从编译器的选择、编译过程的原理、编译中可能遇到的问题以及UDF的解释与调试等方面,为读者详细介绍与分析Fluent UDF编译与解释相关的知识和技巧。

一、编译器的选择在进行Fluent UDF编译之前,用户需要选择适合的编译器。

FLUENT 软件支持多种编译器,包括Microsoft Visual Studio、gcc、Intel Compiler等。

用户可以根据自己的喜好和系统环境选择合适的编译器。

二、编译过程的原理Fluent UDF的编译过程是将用户编写的程序源文件经过编译器进行编译,生成动态信息库(.dll文件)或共享对象文件(.so文件),然后再将生成的库文件加载到FLUENT软件中。

编译器将源文件翻译成机器语言,使得FLUENT软件可以识别并运行用户自定义的函数。

三、编译中可能遇到的问题在编写UDF并进行编译的过程中,用户可能会遇到一些常见的问题,如编译器报错、信息错误、库文件加载失败等。

这些问题通常是由于用户编写的程序存在语法错误、逻辑错误或者编译器的设置问题所致。

在遇到这些问题时,用户需要逐一排查并修正,保证程序能够正确地编译通过。

四、 UDF的解释与调试编译通过的UDF需要在FLUENT软件中进行解释与调试,确保其能够正确地加载和运行。

UDF编译错误解决方法

compiled的时候,fluent出现以下提示:'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。

'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。

而点击load时则出现不可编译的错误:Opening library "libudf"... Error: open_udf_library: 系统找不到指定的文件。

解决方法:1)安装VC的时候要依据提示当询问是否设置环境变量要选是2)安装完毕后点击我的电脑> 属性> 高级> 环境变量查看环境变量值是否存在:“include”“lib”“path”变量(如不存在可以按照我最后显示的变量值手动添加)3)当以上环境变量均存在时运行开始——Fluent6.3——set Enviroment选择yes,fluent的环境变量将会自动添加,这时再运行fluent,重新编译就可以成功了Build和load的提示为:Deleted old libudf\ntx86\2d\libudf.dll已复制 1 个文件。

(system "copy C:\fluent\Fluent.Inc\fluent6.3.26\src\makefile_nt.udf libudf\ntx86\2d\makefile")已复制 1 个文件。

(chdir "libudf")()(chdir "ntx86\2d")()valve.c# Generating udf_names.c because of makefile valve.objudf_names.c# Linking libudf.dll because of makefile user_nt.udf udf_names.obj valve.objMicrosoft (R) Incremental Linker Version 6.00.8168Copyright (C) Microsoft Corp 1992-1998. All rights reserved.Creating library libudf.lib and object libudf.expDone."E:/dongwanggelianxi"Opening library "libudf"...Library "libudf\ntx86\2d\libudf.dll" openedvalveDone.此时我机子的环境变量显示如下:1)Include D:\Program Files\Microsoft Visual Studio\VC98\atl\include;D:\Program Files\Microsoft Visual Studio\VC98\mfc\include;D:\Program Files\Microsoft Visual Studio\VC98\include2)Lib D:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;D:\Program Files\Microsoft Visual Studio\VC98\lib3)MSDevDir D:\Program Files\Microsoft Visual Studio\Common\MSDev984)PATH D:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\StormII\Codec;C:\Program Files\StormII;c:\fluent\fluent.inc\ntbin\ntx86环境变量设置成如上形式就OK啦。

UDF 编译疑难问题

至于为什么意思语句编译会出错就需要更加专业的程序员来解释。
接下来如果编译如下的程序
#include "udf.h"
DEFINE_TRANS_FLENGTH(user_Flength, c, t)
{
real Flength = 31.468;
return Flength;
}
DEFINE_TRANS_RETHETA_C(user_Re_thetac, c, t)
如果你查找ycheck.h,想加入这个头文件来解决这个问题的话,你会发现在中文资料库里根本就查不到这样的头文件。这可能是该公司内部开发的一个头文件。所以这条路又行不通。那么如果将这条预处理程序忽略掉呢?结果就会出现以下的编译错误:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(99): error C2061:语法错误:标识符“__ATTRIBUTES”
{
real Re_thetac = 176.396;
return Re_thetac;
}
DEFINE_TRANS_RETHETA_T(user_Re_thetat, c, t)
{
real Re_thetat = 210;
return Re_etat;
}
会出现如下的错误,许多人认为这个程序是直接从fluent帮助文件里拷贝的应该没什么问题,但是阅读资料应该全面,注意到t的声明在程序里没有给出,但是却在帮助文件的前半部分查到。Fluent里面默认thread为一个指针,而t不是所以将t改成thread应该就可以了,结果证实我的推理是正确的。
udf_names.c(7): error C2059:语法错误:“}”udf_names.c(8): warning C4034: sizeof返回0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
至于为什么意思语句编译会出错就需要更加专业的程序员来解释。
接下来如果编译如下的程序
#include "udf.h"
DEFINE_TRANS_FLENGTH(user_Flength, c, t)
{
real Flength = 31.468;
return Flength;
}
DEFINE_TRANS_RETHETA_C(user_Re_thetac, c, t)
_Check_return_ _ACRTIMP double __cdecl cbrt(_In_ double _X);(求立方根函数)
改成
//_Check_return_ _ACRTIMP double __cdecl cbrt(_In_ double _X);(求立方根函数)
即忽略这样一个函数的定义。结果就可以成功的编译UDF了。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(99): errorC2059:语法错误:“;”
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(101): error C2061:语法错误:标识符“__ATTRIBUTES”
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(101): error C2059:语法错误:“;”
说明这条头文件是必须的。所以这种方法又失败了。
所以还是回到微软自己提供的math.h文件。解决以上出现的编译问题其实解决的思路很简单将
如果你查找ycheck.h,想加入这个头文件来解决这个问题的话,你会发现在中文资料库里根本就查不到这样的头文件。这可能是该公司内部开发的一个头文件。所以这条路又行不通。那么如果将这条预处理程序忽略掉呢?结果就会出现以下的编译错误:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(99): error C2061:语法错误:标识符“__ATTRIBUTES”
if not "%MSVC%" == "" goto msvc_env110
这个文件中还有其他类似的语句,但是都是重复查找不同的编译环境。通过查找vcvarsall.bat,fluent才知道编译器位置。如果不是就要靠运行msvc_env110,那就要手动设置环境变量了。注意你安装了VS2015以后,在program(x86)中有Microsoft Visual Studio 14.0,Microsoft Visual Studio 12.0,Microsoft Visual Studio 11.0,其中只有一个是有效的,这个要仔细确认(一般只有一个文件夹是完整的安装,估计这样做是为了向下兼容性)。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2143:语法错误:缺少“)”(在“/”的前面)
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2143:语法错误:缺少“{”(在“/”的前面)
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059:语法错误:“/”
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059:语法错误:“)”
UDF编译疑难问题
作者 华南理工大学 何奎2016 5月
随着用户求解的问题越来越复杂,使用fluent软件难免使用编译型的UDF,编译型需要用户安装微软visual stadio C++开发软件,并做正确的环境变量配置。否则则会出现如nmake不是内部命令的错误。除了编译环境的正确设置,还有一些细节上的疑难问题一并给出解决方法。目前这mes.c(7): error C2059:语法错误:“}”udf_names.c(8): warning C4034: sizeof返回0
编译结果
udf_names.c(8): warning C4113: “void (*)()”和“void (*)(void)”的参数列表不同
# Linking libudf.dll because of user_nt.udf udf_names.obj FTparam.obj vel.obj
Microsoft (R) Incremental Linker Version 14.00.23918.0
Copyright (C) Microsoft Corporation. All rights reserved.
如果光按fluent提示的查找错误,是不可能完成错误查找的,打开math.h因为你会看见483行是这样
_Check_return_ _ACRTIMP double __cdecl cbrt(_In_ double _X);(求立方根函数)
这个语句本身是没有什么问题的。如果想修改这条语句完成math.h的编译,那就走入了死胡同。那么换个版本的math.h呢?
修改完了这个路径以后就OK了。
环境变量配置完全以后,还会出现一些别的问题。如编译UDF时会利用math.h,注意编译这个文件有可能会出现很多问题。如下:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059:语法错误:“常量”
于是换了个瑞典公司开发的版本Copyright 2003-2010 IAR Systems AB(瑞典著名软件开发商).
结果编译出现:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(19): fatal error C1083:无法打开包括文件:“ycheck.h”: No such file or directory
{
real Re_thetac = 176.396;
return Re_thetac;
}
DEFINE_TRANS_RETHETA_T(user_Re_thetat, c, t)
{
real Re_thetat = 210;
return Re_thetat;
}
会出现如下的错误,许多人认为这个程序是直接从fluent帮助文件里拷贝的应该没什么问题,但是阅读资料应该全面,注意到t的声明在程序里没有给出,但是却在帮助文件的前半部分查到。Fluent里面默认thread为一个指针,而t不是所以将t改成thread应该就可以了,结果证实我的推理是正确的。
关于环境变量的设置,பைடு நூலகம்络上已经有大量的实例,现介绍一种简单的环境变量配置方法:
在fluent的安装目录下找到udf.bat,修改以下内容:
set MSVC_DEFAULT=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0
if exist "%MSVC_DEFAULT%\VC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%
相关文档
最新文档