gpt4 book ai didi

c++ - 如何在c++中单独编译源代码

转载 作者:行者123 更新时间:2023-11-27 23:01:11 25 4
gpt4 key购买 nike

我希望有人能帮助我解决过去两周我一直在努力解决的这个基本问题。

我有一个包含 4 个项目的解决方案,以及项目文件所依赖的一些库。在这些项目中的每一个中,都包含一个 logic.cpp 文件的拷贝,它包含一长串逻辑,在伪代码中如下所示:

BOOL myLogic(){

if(...)
{
switch(...)
{
case 1:
doA();
break;

case 2:
doB();
break;

...
case 20:
doSomething();
break;
}
}
}

对于项目 #1,它生成该工具的 exe。对于项目 #2,它生成我正在构建的工具的 dll 版本和其他 2 个项目,它们充当我的工具的实用程序文件。如果您注意到逻辑可能会遇到大约 20 种情况,而且数量非常庞大。

所以,我现在的问题是所有这些源代码都被编译到我的单个 exe 或 dll 中,即使在某些情况下部署时甚至可能无法达到其中一些情况。我想要实现的是打破这个switch case,编译出20套不同的exe和dll。所以

1) 应用程序占用空间更小。 2) 逆向工程时可以在一定程度上保护源代码。

因此,如果我仍想继续使用 Visual Studio 的内置编译,我想就如何解决这个问题向社区寻求建议。 (我可以用“构建解决方案”构建 20 套 exe 和 dll)。

谢谢你,我很感激任何建议。如果我的问题不够清楚,请随时澄清。

最佳答案

  1. 创建一个新项目,编译成静态库。在该项目中,为所有 20 个功能创建单独的源 cpp 文件。 (拆分为更多源文件只是为了可维护性。)将 logic.cpp 拆分为 20 个单独的文件。如果有公共(public)代码部分,您可以创建更多源文件来包含这些部分。

  2. 现在创建 2x20 个新项目:20 个 exe 项目和 20 个 dll 项目。这些项目中的每一个都依赖于在步骤 1 中创建的静态库项目,所有这些项目只不过是一个简单的 stub ,用于从公共(public)库中准确调用其中一个功能。

构建解决方案时,对于每个功能,您将拥有 20 个不同名称的可执行文件和 20 个不同名称的 dll。如果在链接器中打开死代码消除,则所有 exes/dll 都不会包含特定功能不需要的代码。

关于c++ - 如何在c++中单独编译源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com