簡體   English   中英

如何在C ++中分別編譯源代碼

[英]How to compile source code separately in c++

我希望有人能幫助我解決過去兩周來我一直在努力解決的這一基本問題。

我有一個包含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中,即使在某些情況下部署甚至無法達到其中某些情況。 我要實現的是打破這種情況,並編譯20套不同的exe和dll。 所以

1)該應用程序占用空間較小。 2)進行反向工程時,可以在一定程度上保護光源。

因此,如果我仍想繼續使用Visual Studio的內置編譯,我想就如何解決此問題向社區尋求建議。 (我可以使用“構建解決方案”構建20套exe和dll)。

謝謝,我感謝您的任何建議。 如果我的問題不夠清楚,請隨時澄清。

  1. 創建一個新項目,將其編譯到靜態庫中。 在該項目中,為所有20個功能創建單獨的源cpp文件。 (僅出於可維護性考慮,才拆分到更多源文件。)將logic.cpp拆分為20個單獨的文件。 如果有通用代碼部分,則可以創建更多源文件來包含這些部分。

  2. 現在創建2x20新項目:20個exe項目和20個dll項目。 這些項目中的每一個都依賴於在步驟1中創建的靜態庫項目,並且所有這些項目都不過是一個簡單的存根,用於從公共庫中精確地調用功能之一。

構建解決方案時,每種功能都將具有20個名稱不同的可執行文件和20個名稱不同的dll。 如果在鏈接器中打開了消除死代碼的功能,則所有exe / dll文件都不會包含特定功能不需要的代碼。

那一些手工呢? 為您的方案引入一些定義,或使用一些標准的定義(例如“ _ISDLL”)並將情況包括在內:-)在“ #ifdefs”中無法到達這些情況

#ifdef _ISDLL
case x:

    break;
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM