"The procedure entry point CsrNewThread could not be located in the dynamic library entry ntdll.dll"
剛把一個公司的程式由 PB9升級成 PB12,在開發環境一切正常,但 deploy 成 exe 後,執行時就出現上圖的報錯。一看頭疼,這種跟編碼沒關,跟數據庫又沒關的,我一向最不懂處理,馬上到網上看高手們有沒有解決方案可以……抄襲,有是好像有的,但只有一些可以試一下,但看起來高深莫測的方法,但都沒有肯定的答案。有時候高人話對話就是高,導致凡人難以看懂……
算了,凡人還是以凡人的思考模式去試一下就好了。是缺這檔案了?不是,它存在;是放錯位置了?也不是,system32 之類的,放與不放都沒影響。
最後看了一下程式文件夾,誒,好多 pb9 的 dll 啊,先清理一下吧。把文件來內的dll 全移走後再執行程式,它罵漏哪個我就補哪個,補齊了以後,程式正常了耶,連前面的問題都消了了啊!
歸納了一下,這報錯可能是源於 dll 版本太老了,不是 ntdll.dll 太老,而是原來執行文件夾內,從 pb9 帶過來的 dll 太老了,後來我補上的都是從 pb12 的 share 裏拷過來的,更新 dll 之後,問題就消失了。既然不再報錯,程式也能用了,世上本來就有許多解釋不了的事情,凡人就不必再深究了,交完貨就上網看漫畫去了。
---- 我是分隔線 ----
This message may be prompt after the application migrated from PB9 to PB12, to solve this problem, you can try to replace all dll files from PB9 to PB12 in the application folder, such as atl71.dll, .libjcc.dll ... etc.