VS2010一個奇怪問題:error C3861: '_beginthreadex': identifier not found

使用VS2010編譯程序出現了一個奇怪的錯誤,如下:

這個錯誤看的人一頭霧水,毫無頭緒。首先,關閉了工程,清理一些臨時文件,問題依舊存在。然後,就去度娘了下這個問題相關的內容,一般的說是缺少頭文件、工程移植、多線程編譯等問題。對照自己的情況,是一點借鑑作用都沒有。只好自己琢磨了。

首先,回顧下問題出現的情景。

我的項目還在開發中的,沒有任何的移植操作;出問題之前項目是可以正常編譯運行的。由於測試需求,項目拷貝到不同的電腦上運行,不同的電腦在硬件的配置上,操作系統的版本上都是一致的。到上一個正常編譯之間的動作包括從A電腦拷貝到B電腦,編寫一個批處理拷貝命令,進行一些機械繁瑣的文件拷貝操作,再就是編譯報錯了。

然後,就是排錯。

很自然的,先查看批處理命令,是否存在異常或者錯誤。發現可以很準確的執行我對這個批處理的預期。之後,編譯A電腦中的備份代碼,可以正常完成編譯並運行。但是再運行批處理文件後,就出現了文章開頭類似的錯誤。確認問題是有批處理操作造成的。

再次之,查找原因。

工程中涉及到多個靜態庫和動態庫的調用,更復雜的是存在這交叉調用的情況。在windows系統中,對於同一個靜態庫的調用存在着苛刻的一致性要求。這裏的情況是,B電腦中已存在這一部分靜態庫,在批處理中又是拷貝了部分更新的靜態庫。在同一個工程的不同調用庫中包含着同一個庫的不同版本,然後不知道怎麼就顯示可文章開頭的錯誤。

最後,測試修改。

一步步按照工程編譯順序更新所有的靜態庫,動態庫等。問題解決了。

 

奇怪的解決方式,奇怪的問題。問題處理了仍然迷迷糊糊的,記錄下來,留待後面查找原因。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章