Visual Studio:链接可执行文件

时间:2010-04-22 16:48:33

标签: c++ visual-studio linker

让我们说:  一个名为“LIB”的静态库项目  一个名为“LIBAPP”的应用项目  一个名为“APP”的应用项目  一个名为“APPTEST”的应用项目

当我向LIBAPP项目依赖项添加“LIB”时,Visual Studio会自动将“LIBAPP”链接到LIB。 但是,当我将APP添加到APPTEST项目依赖项时,它不会。

由于我在APPTEST中对APP的类进行单元测试,我必须链接到APP,因此我目前手动链接APP的所有* .obj文件(数百...)

由于我每次在APP中添加或删除* .cpp文件时都必须更改APPTEST的链接目标,这不是一个很好的解决方案。

那么有没有办法强制Visual Studio自动为我执行此操作,就像添加静态库Project Dependency时一样?

2 个答案:

答案 0 :(得分:1)

你不能像你发现的那样“链接APP”。

一种解决方案是将所有APP的代码放入其自己的库中,将APP保留为在该库中运行函数的单个源文件。您可以使APPTEST另一个链接到新APP库的单个源文件。

答案 1 :(得分:0)

使应用程序依赖于另一个应用程序对于在您点击编译时同时构建(如果需要)两个应用程序非常有用。如果你在APP中有足够的代码,你觉得你需要为它们编写单元测试,我认为最好将这些代码分解到另一个库中,并将其称为“LIBAPPUTIL”或类似的东西,这取决于LIB和APP必须依赖于LIB和LIBAPPUTIL。

你有高尚的意图。通过将LIBAPP的各个部分放入一个单独的库中,您将获得许多好处:

  • 您可以构建具有不同void main()s
  • 的LIBAPP变体
  • 您可以构建多个LIBAPPUTIL,每个LIBAPPUTIL都会测试不同依赖代码集的使用情况。
  • 您可以拥有不依赖于LIB的LIBAPPUTIL的备用实现。如果你对如何使用接口类型(C ++虚拟或充满函数执行器的C结构)很聪明,你可以完全抽象出APP对LIB的依赖。