推 totte:編譯後一個是常數,一個是變數 05/21 01:11
推 rainbow001:筆記中... 05/21 11:05
→ rosemary0401:為甚麼是常數的話 load dll就會產生錯誤? 05/21 18:40
Q1.為甚麼const編譯後是常數的話,load改版後的dll就會出錯??? (load到未改版的常數)
dll改版(將const值從10改為20)並且編譯後是以MSIL的形式存在,
const就算編譯過後是常數,在MSIL裡也會是改版後的常數值(在此例中值為20)
為什麼將改版後的dll附蓋掉之前的dll,還會load到舊的值(在此例中為10)
非得要load此dll的client AP重新編譯過後,才能得到正確的結果???
Q2.為什麼C++的AP load的C++的dll不會有這樣的問題???
因為c++和C# load dll的方式不一樣?? 還是c++的const編譯後是變數而不是常數???
※ 編輯: rosemary0401 來自: 111.240.143.125 (05/21 18:56)
→ evirtues:你說的"load dll"是指執行期所發生的事而非編譯時期發生 05/22 01:01
→ evirtues:如totte所說,const是編譯時期決定而readonly是執行時期 05/22 01:07