RT(Run Time) manifest version 9.0.30729.6161編譯出來的dll不能在其他機器上運行


起因:

程序工程設置了_BIND_TO_CURRENT_VCLIBS_VERSION,打包,到測試機上運行,一切OK。build server上Run time版本號為9.0.30729.4148。

測試需要,我在我機器上build了A.dll,將其拷貝到測試機器替換原來的dll。程序運行不起來,界面也不出來,查看log,發現是loadlibrary失敗。

在我編譯的機器上按照程序,用我自己build的dll替換安裝目錄下的dll,運行程序,ok。

解決:

進一步分析,發現我的機器上用的RT version 9.0.30729.6161。在網上找了6161的vcredist.exe的分發包,在測試機器上安裝,運行程序,OK,成功了。

RT 9.0.30729.6161 下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=26368 (Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update)

分析:

A.dll的menifest里既有4148,又有6161。說明manifest里同時有兩個版本是可行的。

插曲:

在我還沒有找到解決方案前,同事建議將C:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h里的#define _CRT_ASSEMBLY_VERSION "9.0.30729.6161"改成#define _CRT_ASSEMBLY_VERSION "9.0.30729.4148"。我試了,結果是不行,不確定是這樣不行,還是我依賴的dll/lib庫太多了,沒有處理干凈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM