在Visual Studio 2005中生成使用其他DLL的DLL

Building DLLs that use other DLLs in Visual Studio 2005

本文关键字:DLL 其他 Visual Studio 2005      更新时间:2023-10-16

我正试图在Visual Studio 2005中并行化我们的构建过程,以利用我们的多核硬件。为了稍微简化一些,我有两个DLL和一个应用程序。DLL A没有依赖项。DLL B使用DLL A中定义的某些函数。应用程序使用两者中定义的函数。

我认为我应该能够并行构建A和B,因为在链接应用程序之前不需要解析符号。然而,当我删除DLL B对A的项目依赖时,我会出现以下错误:

YFindReplaceWidget.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual unsigned long __thiscall CORBBaseComponent::GetRefCount(void)const " (__imp_?GetRefCount@CORBBaseComponent@@UBEKXZ)

有没有办法解决这些错误,这样我就可以并行地构建这些DLL?

那是。。。一种非常奇怪的思维模式。DLL只是具有不同扩展名的EXE,它们需要完整的链接信息才能构建。

只要你的构建是这样的链(app->b->a),它们就不能并行构建。

Microsoft在VS2008中正式引入了一个多处理器构建选项。它将允许构建为同一项目启动多个编译器。简单的解决方案就是升级到Visual Studio的最新版本。

如果您被困在VS2005上,那么它实际上也可以在那里使用,但没有得到官方支持。只需添加/MP作为额外的编译器选项。

http://blog.280z28.org/archives/2007/10/17/(建议您不要在构建服务器上使用它)

http://msdn.microsoft.com/en-us/library/bb385193.aspx