Visual Studio: 链接可执行文件

3
假设我有以下项目: 一个名为“LIB”的静态库项目 一个名为“LIBAPP”的应用程序项目 一个名为“APP”的应用程序项目 一个名为“APPTEST”的应用程序项目
当我将“LIB”添加到“LIBAPP Project Dependencies”中时,Visual Studio会自动将“LIBAPP”链接到“LIB”。 但是,当我将APP添加到APPTEST项目依赖项中时,它并没有自动链接。
由于我正在APPTEST中对APP的类进行单元测试,因此我必须链接到APP,因此我目前正在手动链接所有APP的*.obj文件(数百个...)
由于每次从APP中添加或删除*.cpp文件时都必须更改APPTEST的链接目标,因此这不是一个好的解决方案。
那么,是否有一种方法可以强制Visual Studio自动为我执行此操作,就像添加静态库Project Dependency时所做的那样?
2个回答

1

正如你所发现的那样,你无法“链接到APP”。

一个解决方案是将所有APP的代码放入自己的库中,将APP作为单个源文件,运行该库中的函数。然后,你可以将APPTEST作为另一个单独的源文件,链接到新的APP库。


0

让一个应用程序依赖于另一个应用程序有助于在编译时同时构建两个应用程序(如果需要)。如果您在APP中拥有足够的代码需要为其编写单元测试,那么最好将此代码拆分为另一个库,并称之为“LIBAPPUTIL”或类似名称,该库依赖于LIB,而APP将不得不依赖于LIB和LIBAPPUTIL。

您有崇高的意图。通过将LIBAPP的部分放入单独的库中,您将获得一系列好处:

  • 您可以构建多个具有不同void main()的LIBAPP变体
  • 您可以构建几个LIBAPPUTIL,每个LIBAPPUTIL都测试使用不同的依赖代码集合。
  • 您可以拥有不依赖于LIB的替代实现。如果您聪明地使用接口类型(无论是C++虚拟还是带有函数指针的C结构体),您可以完全抽象出APP对LIB的依存关系。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接