构建在Visual Studio 2005中使用其他DLL的DLL

时间:2011-06-16 18:00:00

标签: c++ dll visual-studio-2005

我正在尝试在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?

2 个答案:

答案 0 :(得分:1)

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

只要您的构建是类似的链(app-> b-> a),它们就不能并行构建。

答案 1 :(得分:0)

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

如果你被困在VS2005上,那么它实际上也可用,但不是官方支持的。只需添加/ MP作为额外的编译器选项。

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

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