2008-10-08 82 views
0

在過去,我們在Visual Studio 6.0應用程序中使用用Visual Studio 2005創建的DLL庫(當然,VS2005 DLL是C++非託管的)遇到一些問題。在你看來,如果庫是靜態的(* .lib)而不是動態的,我們會陷入同樣的​​問題嗎?靜態庫 - Visual Studio 2005/6.0兼容性

回答

1

看起來問題區域應該是運行時庫 - 如果VS2005 DLL使用運行時庫的DLL版本,那麼當安裝應用程序時需要安裝兩組運行時。如果您的VS2005 DLL靜態鏈接到VS2005運行時,那麼它應該沒問題。

0

這當然取決於什麼樣的問題。有一些衝突更可能發生在DLL中,有些更可能發生在靜態庫中。如果您正在針對相同版本的Microsoft SDK進行構建,則會最大限度地減少問題。

1

Microsoft建議必須使用與主應用程序相同的CRT/STL編譯非託管DLL。主應用程序和DLL應該使用與CRT的動態鏈接。

如果DLL實現了一個純粹的C接口或一個COM接口,那麼應該可以使用來自另一個版本的Visual Studio的DLL。但是如果DLL不使用CRT的靜態鏈接,那麼它將要求CRT-dll可用。