2008-10-08 83 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可用。