
發布
注冊
/
登錄UDF編譯錯誤
關注創建者:木子丞 創建時間:2016-12-02

UDF編譯錯誤的實例教程
進行UDF編譯</strong></p><p><br></p><p>在環境變量配置成功的情況下,再進行自己書寫的UDF的編譯。</p><p>這一步還可能會遇到很多問題。由于環境變量已經配置成功,<strong>因此遇到的問題一定是UDF本身的問題,可能是書寫不規范,也可能是語法問題。</strong></p><p> </p><p>還有可能,UDF編譯通過,但是一點計算就會出現下圖這種錯誤</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/8tJMdLVYZyibppJHEe1k9RtYNJ2XIABF4zWoicH4L7cicpmllksIWsVkzdMLTPXNcxKZWgHzvoNPHwakapkEhzX4g/640?wx_fmt=png" width="100%"></p><p>或者出現received a fatal signal (aborted).</p><p> </p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/8tJMdLVYZyibppJHEe1k9RtYNJ2XIABF4V7fmKF0yIEHj5LcA8bO9M250RG7PmqKpbvEFRb2hv86icQmksDibgTNA/640?wx_fmt=png" width="100%"></p><p>總之錯誤總是千奇百怪,防不勝防。但當使用的多了,會發現常見的錯誤原因就那幾個,多注意排查即可。這部分下篇文章會進行敘述。
展開 Fluent軟件的UDF編譯環境修改
使用Fluent軟件的UDF前需安裝Ansys和Visual studio軟件。
此處以Ansys19.0 和Visual studio 2012為例,在Ansys19.0安裝位置找到udf.bat文件。
用記事本打開udf.bat,找到圖示位置:
在后面添加:
set MSVC_DEFAULT=此處填Visual studio12.0安裝位置
if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%
if not "%MSVC%" == "" goto msvc_env120
:msvc_env120
set MSVC_VERSION=120
call "%MSVC%\VC\vcvarsall.bat" amd64
goto ms_c_end
保存即可在Fluent軟件中使用UDF。
展開 最近使用fluent14.0 udf的時候編譯總是出現問題,經過在網上查找資料,自己摸索終于解決了。
圖1
如何修改:設置好環境變量,再次編譯就可以成功加載。
環境變量設置目前較為成熟和成功方法,經過多次給網友調試,總結認為按路徑設置環境變量是最好的方法,成功率百分之百!這里切記修改環境變量不是在系統變量中修改!!
設置如下:
圖2
主要找到編譯器安裝路徑下得include\lib\path就可以設置成功。具體見教程vs2010、2013環境變量設置。
另外需要注意是:由于程序字符格式問題,這種情況多為復制黏貼幫助文檔或者其他地方程序,直接黏貼在編譯器或者text文本里得,導致沒有完全編譯,加載過程時報錯,找不到liubuf.dll文件。
解決辦法:
編譯不成功原因是由于程序本身格式問題,編譯器不識別,多為復制黏貼過來程序。這時候可以將其復制黏貼到可以編譯成功程序里,即可解決問題。
2編譯過程中,由于書寫有誤,導致程序報錯。
圖3
這樣錯誤要根據報錯提示進行修改,千萬要注意看報錯提示,再進行逐行修改,事半功倍。
例如:第13行缺少分號,增加分號 即可。
圖4
具體調整見技術鄰視頻。
3由于程序結構問題,導致報錯,received a fata segmental?
例如:在邊界上進行面循環時,我們卻想去獲得網格上參數值,例如C_U(c,t)網格速度值,這樣就是不合理得,會出現分割錯誤。同時,對于C_VOF(c,t)體積分數這樣宏,一定要注意它的指針問題,否則你會出現常見錯誤。
4由于程序函數宏格式問題,導致缺少“}”,size of“0”,
圖5
程序本身沒有錯誤,但是編譯就是報錯!這時比較讓人著急,找不到頭緒!
解決辦法:這時只需要找一個能編譯程序,復制黏貼過去。如果還不行,就說明你的函數是不是哪個地方寫錯了,要進行仔細檢查!
展開 錯誤原因與解決方法:fluent udf在compiled時出現錯誤:'nmake' 不是內部或外部命令
對比了兩臺主機上的環境變量 Path、 lib 以及 include 之后發現可以正常運行udf的舊的主機(A)與新的主機(B)之間的差別,發現Path等并沒有太多異常,甚至A上幾乎沒有添加環境變量。于是采用下方案
解決方案:
從Microsoft 官網下載 軟件開發補丁: NET Framework 2.0 Software Development Kit (SDK) (x64)
安裝補丁
從開始快捷鍵中 以管理員身份運行 SDK 命令行,SDK Command Prompt
命令行中 切換至fluent 啟動項位置,運行fluent
切換fluent工作目錄至case 目錄,運行。
udf 可以成功運行
在SDK 運行代碼為:
——————————————————
隨后,刪除了libudf之后 以正常方式打開case之后仍然失敗。
不刪除libudf,正常方式打開case之后成功。
因此推斷 在編譯過程中有點問題,可能還是VS與 fluent 之間配合不好。 在編譯完成之后udf即可正常運行
附上一張圖片和參考方案來源
How can I manage to compile my UDF with Windows 7 64bit?
This problem sometimes looks similar to the one concerning the missing 'nmake'.
展開 
UDF編譯錯誤的相關專題、標簽、搜索
UDF編譯錯誤的最新內容
<p><strong>1.UDF錯誤代碼排查</strong></p><p><br></p><p>UDF出錯如何進行錯誤排查???</p><p> </p><p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/8tJMdLVYZyibBqSh9oVWicPJ4l8z5fMHmFWuccZW4NDgy7TicOFbibIYfPOo71oeU4qu8qmxU82rNxf5VUd5twKrbw
<p><strong>1 UDF報錯</strong></p><p><br></p><p>UDF錯誤主要分為兩類:</p><p>第一類:UDF代碼錯誤</p><p>這類錯誤非常常見,但是也非常容易解決,因為Build過程,控制臺會提示有問題的代碼行數。只要根據提示更改源代碼即可。</p><p><br></p><p>第二類:UDF設置出錯</p><p>這類錯誤原因非常多,基本特點就是Build能順利通過
<p>很多同學會在群里面問一些UDF編譯的問題,特此寫一篇文章詳細說明一下對UDF進行編譯的正確流程。</p><p><br></p><p><strong>1. UDF正常編譯流程</strong></p><p><br></p><p>第一步:配置環境變量,參考公眾號文章<a href="http://mp.weixin.qq.com/s?__biz=MzkwMTAyNTc0Mw==&mid=2247483827&
C 瞬態溫度場下修正Burgers模型UMAT子程序源代碼
C
C 給狀態變量數組賦初值為零,調用ABAQUS子程序SDVINI
C GIVE STATEV THE INITIAL VALUE OF ZERO
C
SUBROUTINE SDVINI(STATEV,COORDS,NSTATV,NCRDS,NOEL,NPT,LAYER,KSPT)
C
請問,有人知道其中的libifcoremdd.lib是什么意思嗎?
或者這個錯誤應該怎么解決呢
error 1:Out of memory 內存溢出
error 2:Identifier expected 缺標識符
error 3:Unknown identifier 未定義的標識符
error 4:Duplicate identifier 重復定義的標識符
error 5:Syntax error 語法錯誤
error 6:Error in real constant
Fluent軟件的UDF編譯環境修改
使用Fluent軟件的UDF前需安裝Ansys和Visual studio軟件。
此處以Ansys19.0 和Visual studio 2012為例,在Ansys19.0安裝位置找到udf.bat文件。
用記事本打開udf.bat,找到圖示位置:
在后面添加:
set MSVC_DEFAULT=此處填Visual studio12.0
1由于環境變量沒有設置好,沒法生成liubuf.dll文件,這時你加載時liubu.dll時報錯!
圖1
如何修改:設置好環境變量,再次編譯就可以成功加載。
環境變量設置目前較為成熟和成功方法,經過多次給網友調試,總結認為按路徑設置環境變量是最好的方法,成功率百分之百!這里切記修改環境變量不是在系統變量中修改!!
設置如下:
圖2
主要找到編譯器安裝路徑下得include
錯誤原因與解決方法:fluent udf在compiled時出現錯誤:'nmake' 不是內部或外部命令
對比了兩臺主機上的環境變量 Path、 lib 以及 include 之后發現可以正常運行udf的舊的主機(A)與新的主機(B)之間的差別,發現Path等并沒有太多異常,甚至A上幾乎沒有添加環境變量。于是采用下方案
LINK: fatal erro LNK1104: cannot open file 'kernel132.lib'
命令行下使用cl編譯的時候,竟然提示:fatal error LNK1104: 無法打開文件“kernel32.lib”,所幸在IDE里面運行沒有問題。
【問題解決】
Try1)查了一下環境變量的庫路徑(LIB),Program Files\Microsoft Visual