C++ 在VisualStudio2005中构建使用其他DLL的DLL
我正试图在VisualStudio2005中并行化我们的构建过程,以利用我们的多核硬件。简单一点,我有两个DLL和一个应用程序。DLL A没有依赖项。DLL B使用DLL A中定义的某些函数。应用程序使用两者中定义的函数 我认为我应该能够并行地构建A和B,因为在链接应用程序之前不需要解析符号。但是,当我删除DLL B对A的项目依赖关系时,会出现如下错误:C++ 在VisualStudio2005中构建使用其他DLL的DLL,c++,dll,visual-studio-2005,C++,Dll,Visual Studio 2005,我正试图在VisualStudio2005中并行化我们的构建过程,以利用我们的多核硬件。简单一点,我有两个DLL和一个应用程序。DLL A没有依赖项。DLL B使用DLL A中定义的某些函数。应用程序使用两者中定义的函数 我认为我应该能够并行地构建A和B,因为在链接应用程序之前不需要解析符号。但是,当我删除DLL B对A的项目依赖关系时,会出现如下错误: YFindReplaceWidget.obj : error LNK2001: unresolved external symbol "__d
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),它们就不能并行构建。微软在VS2008中正式引入了多处理器构建选项。它将允许构建为同一项目启动多个编译器。简单的解决方案就是升级到最新版本的VisualStudio 如果您仍停留在VS2005上,那么它实际上也在那里可用,但没有得到官方支持。只需添加/MP作为额外的编译器选项 (建议您不要在buildserver上使用它)
DLL是否有类似EXE的程序入口点?我原以为它们更像是不能独立运行的库。从技术上讲,EXE是带有
WinMain
函数要求的DLL。DLL实际上有一个“入口点”DllMain
,但它有些不同。不过,我的观点是,构建DLL和构建EXE没有任何区别,它不能用不完整的链接器信息来完成。酷,我不知道这样的技术区别!:)有趣。我习惯于认为它们更像是Unix下的.so文件,不需要完全链接。