在Microsoft Visual Studio 2010中设置子项目

在Microsoft Visual Studio 2010中设置子项目,c,visual-studio-2010,build-process,C,Visual Studio 2010,Build Process,我正在使用VisualStudio2010用C语言开发Windows代码 我正在做几个相关的项目:一个静态库、一个DLL和一个可执行文件。DLL应该链接静态库,可执行文件依赖于DLL。(我正在使用“隐式”DLL链接;我不需要控制DLL的加载和卸载。) 现在我有三个独立的VS2010项目,但我知道可以将它们设置为“子项目”:静态库应该是DLL的子项目,DLL应该是EXE的子项目 我想解决以下问题: 当我重建EXE时,如果需要,它应该重建DLL,反过来,如果需要,DLL构建应该重建静态库。我只想打

我正在使用VisualStudio2010用C语言开发Windows代码

我正在做几个相关的项目:一个静态库、一个DLL和一个可执行文件。DLL应该链接静态库,可执行文件依赖于DLL。(我正在使用“隐式”DLL链接;我不需要控制DLL的加载和卸载。)

现在我有三个独立的VS2010项目,但我知道可以将它们设置为“子项目”:静态库应该是DLL的子项目,DLL应该是EXE的子项目

我想解决以下问题:

  • 当我重建EXE时,如果需要,它应该重建DLL,反过来,如果需要,DLL构建应该重建静态库。我只想打开EXE,点击
    F7
    键,一切都会建立起来

  • 当我将EXE重建为Debug时,它应该与DLL中的Debug
    .lib
    文件链接;同样,当我将EXE重新编译为Release时,它应该与DLL中的Release
    .lib
    文件链接。如果我正确设置子项目,这会自动工作吗

编辑:我取得了进步。首先,在DLL项目中,我使用了
File/Add
,然后选择
addexistingproject
添加静态库。(据我所知,这仅在
文件
菜单中可用!它肯定不在右键单击菜单中。)其次,我在左侧的“解决方案资源管理器”侧栏中单击DLL项目,然后右键单击并选择
项目依赖项…
,并设置DLL项目依赖于静态库项目,哪个应该先建造。Visual Studio似乎已经神奇地为我设置了链接依赖项,当我在DLL项目中点击
F7
键时,它将构建静态库项目


我尝试对EXE项目重复上述步骤。现在它将构建DLL,但它还没有正确链接东西;链接器抱怨从DLL导出的函数不可用。

您不能真正拥有“子项目”,但您可以在一个解决方案中拥有多个项目。然后,您可以通过打开“项目|项目依赖项…”菜单项来标记它们之间的依赖关系


您还可以通过一个项目引用另一个项目(从“Project | References…”菜单项),在某些项目之间建立“更强”的依赖关系。例如,如果应用程序项目引用库项目,则该库将自动链接到该应用程序。

我让它工作。以下是我用来让它工作的步骤:

  • 选择
    File/Add/Existing Project…
    并导航到您想要作为子项目的其他项目。选择
    .vcxproj
    文件并确认对话框。您刚刚添加了一个项目作为子项目

  • 右键单击左侧“解决方案资源管理器”侧栏窗格中的主项目,然后选择
    项目依赖项…
    单击子项目使其成为主项目的依赖项,然后单击对话框。这是一个选项卡式对话框,另一个选项卡是“构建顺序”;如果单击该选项,可以确保VisualStudio将首先生成子项目,然后再生成主项目。您现在已经设置好了,以便先生成子项目,然后生成主项目

  • 右键单击左侧“解决方案资源管理器”侧栏窗格中的主项目,并在“引用”对话框中选择
    References…
    ,单击
    添加新引用…
    按钮。使主项目参考子项目并确定它。现在,您已经设置好链接器将链接子项目的输出文件

我执行了上述步骤以使DLL项目将静态库项目作为子项目,并再次执行这些步骤以使EXE项目将DLL项目作为子项目。但是我得到了关于静态库文件找不到的构建错误。因此,我认为,即使我将静态库设置为DLL库的子项目,在EXE项目中设置该依赖关系也是必要的;依赖项似乎不是可传递的!我执行了上述步骤,以明确静态库是EXE项目的DLL子项目的子项目,并且修复了这些问题

现在,当我点击
F7
键时,一切都会建立起来。如果我选择
Build/Clean Solution
它将清除所有三个项目。当它链接时,它会根据需要获取调试或发布库文件,并将它们链接到中


有时当我点击F7和build时,build失败了,说依赖库已经过时了;但是如果我只是再次点击
F7
,那么VisualStudio将重建依赖库,并且构建成功。如果我按Ctrl+Alt+F7来强制执行一个干净的构建,那么每次构建都会成功。我不知道为什么VisualStudio会有这种怪癖。

Mice再次回答,我的赞美。请告诉我:我如何设置多个项目
Add->Existing item
,然后添加另一个项目的
.sln
文件,或者什么?第二部分:啊哈,这就是引用的工作原理。我很难找出参考资料,因为我只是得到一个空的对话框,而帮助也没有把事情弄清楚。对话框是空的,因为我还没有任何参考!看起来您使用了
File/Add
,然后选择
Existing Project
添加子项目。参见我在问题中添加的新文本。