Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在VisualStudio2005中构建使用其他DLL的DLL_C++_Dll_Visual Studio 2005 - Fatal编程技术网

C++ 在VisualStudio2005中构建使用其他DLL的DLL

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

我正试图在VisualStudio2005中并行化我们的构建过程,以利用我们的多核硬件。简单一点,我有两个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),它们就不能并行构建。

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

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

(建议您不要在buildserver上使用它)


DLL是否有类似EXE的程序入口点?我原以为它们更像是不能独立运行的库。从技术上讲,EXE是带有
WinMain
函数要求的DLL。DLL实际上有一个“入口点”
DllMain
,但它有些不同。不过,我的观点是,构建DLL和构建EXE没有任何区别,它不能用不完整的链接器信息来完成。酷,我不知道这样的技术区别!:)有趣。我习惯于认为它们更像是Unix下的.so文件,不需要完全链接。