簡體   English   中英

VC9和VC8 lib兼容

[英]VC9 and VC8 lib compatibility

(最初的問題在那里被問到: http//www.ogre3d.org/phpBB2/viewtopic.php?t = 44832

有人問道:“雖然我想在vs2008(VC9)中構建所有內容,但PhysX SDK是使用vs2005(VC8)構建的。這是否會導致任何問題,使用所有vc9編譯的lib並與此vc8 lib結合使用?”

我回答說,在我嘗試使用VC8生成的.lib文件(和.dll)並將其包含在vc9編譯的exe中的前一天,編譯器無法打開.lib文件。

現在,其他人回答他們這樣做沒有問題....

我找不到vc9和vc8之間的lib兼容性信息。

所以...幫忙?

它可以工作,但在共享CRT / STL對象時會遇到問題。

因此,當您在vc8庫中執行“new”並將其返回到vc9函數(后者又刪除此對象)時,您將從delete中獲取斷言。

 T* funcInVc8Lib()
 {
     return new T();
 }

 void funcInVC9Program()
 {
     T* p = funcInVc8Lib();
     // ...
     delete p; // it should at least assert here (in _CrtIsValidHeapPtr() )
 }

lib格式為COFF( http://msdn.microsoft.com/en-us/library/7ykb2k5f ( VS.71 ) .aspx ),COFF也用於PE格式。 因此,我希望大多數(如果不是所有)使用vc8構建的庫都可以與vc9鏈接。

但是我在msdn上發現了一個線程,其中MS似乎不保證用VC8編譯的lib將與VC9很好地鏈接。 http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8042a534-aa8b-4f99-81ee-e5ff39ae6e69/

考慮到這2位信息,我得出結論:盡管MS不保證完全100%的兼容性,但我希望在大多數情況下將vc8 lib和vc9連接起來工作。

希望這可以幫助。 PS你寫“編譯器無法打開.lib文件。”。 鏈接器是嘗試打開要鏈接的庫而不是編譯器的鏈接器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM