场景1

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

如何将PrjA中的源代码文件拆分为PrjA1PrjB,以便更易于管理源代码,而编译结果PrjA1.exePrjA.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

与方案1相同,只是这一轮PrjA的编译结果是一个Windows DLL,名为PrjA.dll,如何将PrjA分为PrjA1PrjB

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

最佳答案

这是将现有代码移入静态库的方式。我使用VS2015,它应该与VS2013相同,但我无法检查。我从以下解决方案结构开始:
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

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

检查静态库并取消选择预编译头
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

然后在两个项目的解决方案资源管理器中单击“显示所有文件”图标。这将关闭过滤器并按原样显示项目文件夹。它看起来应该像这样:
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

将所有需要的文件从一个项目拖放到另一个项目:
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

现在参考您的图书馆。取消选中显示所有文件图标以显示引用。 Right click -> Add reference并检查您的静态库项目:
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

最后要做的是将包含目录添加到使用该库的项目中。这是在项目属性中完成的。确保检查所有配置和所有平台:
c++ - 如何在Visual Studio中将C++项目一分为二?-LMLPHP

而已。现在,当您构建解决方案时,VS会构建静态库,构建主项目并将它们链接在一起。结果应该与所有项目都在同一项目中一样。

关于c++ - 如何在Visual Studio中将C++项目一分为二?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39334843/

10-11 07:43