Baan全域性變數的衝突問題

2021-09-01 19:01:00 字數 556 閱讀 6507

session tdsls4501m000 recalcuate price時出錯:

fatal error: dynamic link failure external symbol 'item' in dll object 'otfglddll4002'

can not continue in tdsls4501m000 in dll: otfintdlltfgld (<5>).

出錯資訊不是很明確,一時暈大浪.

查library tfglddll4002和tfintdlltfgld俱為s***的program,非二次開發,留意到tfglddll4002有定義乙個全域性變數: extern domain tcitem  item.

再查回session tdsls4501m000的script tdsls4501,其也有定義了乙個全域性變數,不過domain不一樣:extern doamin tcdsca item.這下錯誤清淅了。

baan的變數若定義為extern,即可為外部使用,但若外部的**再有定義同名的變數,且其變數型別和前不一致則會觸發執行時錯誤(可憐的baan編譯時是發現不了該問題的)

全域性變數鏈結時的衝突

今天在寫程式時,發現了乙個全域性變數引用時的連線錯誤,大概意思是為重複定義。在.h檔案中,定義了乙個變數,而這個.h檔案被多個.c檔案引用,在鏈結時出現該變數被重複定義的錯誤。原因很簡單,在.c檔案中,均把這個變數看作是自身的全域性變數,故出現上述錯誤。若想引用別的.c檔案中定義的全域性變數,則需在...

全域性變數的問題

今天在工程裡新增了乙個專門放置全域性變數的標頭檔案,在別的很多c檔案中進行了引用,沒想到編譯的時候老是提示duplicate symbal g7task.說來自己也太差勁了,竟然忘了在c檔案中新增extern關鍵字來引用這個外部變數。而且要命的是在標頭檔案中是不能賦初值的,否則會遇到同樣的鏈結錯誤。...

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...