【问题标题】:How to split a C++ project into two in Visual Studio?如何在 Visual Studio 中将 C++ 项目拆分为两个?
【发布时间】:2016-09-05 16:51:12
【问题描述】:

场景 1

一个解决方案SolA只包含一个名为PrjA的项目。
PrjA是一个Win32控制台应用程序,编译结果是PrjA.exe

如何将PrjA中的源代码文件拆分为PrjA1PrjB,这样源代码的管理更容易,而编译结果PrjA1.exe几乎和PrjA.exe?

例如,我有PrjA :-

  • PrjA 有 300 个 .cpp 文件。
  • PrjA.exe 大小为 400KB。

我希望将PrjA 拆分为 2 个项目:-

  • PrjA1 有 200 个 .cpp 文件
  • PrjB 有 100 个 .cpp 文件。
  • PrjA1.exe 也是 400KB 左右。

我不确定如何设置 PrjB 或它的编译结果。
假设PrjB 编译为PrjB.DLL,大小为100KB,我希望PrjA1.exe 能以某种方式将PrjB.dll 嵌入到自身内部。因此大小为 400KB。
我不想要 300KB PrjA1.exe,它会在运行时动态链接到 100KB PrjB.dll

问题:如何设置PrjB,如何设置PrjA1PrjB之间的链接?

场景 2

同场景一,只是这一轮PrjA的编译结果是一个windows DLL,命名为PrjA.dll,如何将PrjA拆分成PrjA1PrjB

开发环境是windows 7 64位下的Visual Studio 2013,但是编译结果是32位的。

【问题讨论】:

  • 完全不清楚你在问什么: >我应该如何拆分 ProjA int PrjA1 和 PrjB,以便编译结果 PrjA1.exe 与 PrjA.exe 几乎相同?
  • @TomasZubiri 谢谢。我刚刚更新了问题
  • 目前还不清楚拆分是什么意思。如果 prjA 拆分为 PrjA1 和 PrjB ,但 PrjA1 产生相同的输出。 PrjB 将包含什么? PrjA1 不会包含所有 prjA 吗?
  • @TomasZubiri what split is the source code files,但我希望编译结果,exe文件在代码拆分后几乎保持不变。
  • 您可能应该创建一个概念验证测试项目,其中只有两个或三个源文件,然后您可以在解决方案下的单独项目中拥有它们。通常,不是 Visual Studio 或 Windows 特定的,您将拥有生成可执行文件的应用程序项目,以及具有共享代码的库项目,它们生成(静态或共享)库文件。一个可执行项目不会使用来自其他可执行项目的代码,只会使用来自其他库项目的代码。

标签: c++ visual-studio projects-and-solutions


【解决方案1】:

这是您将现有代码移入静态库的方式。我用的是VS2015,应该和VS2013一样,但我不能检查。我从以下解决方案结构开始:

首先要做的是将新项目添加到解决方案中。 File -> Add -> New project -> Win32 Project

选中静态库并取消选中预编译头

然后在两个项目的解决方案资源管理器中单击显示所有文件图标。这将关闭过滤器并按原样显示项目文件夹。它应该如下所示:

将所有需要的文件从一个项目拖放到另一个项目:

现在引用您的库。取消选中显示所有文件图标以显示参考。 Right click -> Add reference 并检查您的静态库项目:

最后要做的是将包含目录添加到使用该库的项目中。这是在项目属性中完成的。请务必检查所有配置和所有平台:

就是这样。现在,当您构建解决方案时,VS 会构建您的静态库,构建您的主项目并将它们链接在一起。结果应该是相同的,就好像一切都在同一个项目中一样。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多