2012-07-06 39 views
0

我有一個調用dllB方法的主程序A.Pragma在跨DLL中的使用

dllB構建在發佈模式。 根據程序A的構建方式(Release/Debug),結果應該被適當地返回,但總是返回「releaseMode」。

那麼有沒有一種方法可以在發佈模式下引用dllB,並根據主程序首選項(Release/Debug)獲取結果。

Program A--- 
main() 
{ 
    var dllbObj = new dllB(); 
    var response = dllObj.CallMethod(); 
//Release mode should return "releaseMode" 
//and debug mode should return "debugMode" 
} 

dll B--- 
public string CallMethod() 
{ 
string res; 
#if DEBUG 
      res = "debugMode"; 
#endif 
      res = "releaseMode"; 

      return res; 
} 

回答

1

無法通過編譯指示實現此目的,因爲它們在編譯時被烘焙到程序集中。如果第二個程序集是以發佈模式編譯的,它不包含任何可能放在DEBUG部分中的代碼。

+0

感謝達林,但那麼最好的方法是使用2個dll一個用於調試,另一個用於release.Can你可以建議。 – 2012-07-06 17:10:35

+0

如果您有第二個程序集的源代碼,您可以根據主程序集的模式重新編譯它。如果你不這樣做,那麼你根本就沒有這個DEBUG模式的輔助程序集的源代碼,所以你什麼都做不了。 – 2012-07-06 17:12:57

1

由於A.exe和B.dll是相互獨立編譯的,因此無法實現此目的。 B編譯版本"debugMode"字符串不會以任何形狀或形式在B.dll中存在。它被編譯器完全忽略。

A.exeB.dll獲得調試或釋放字符串的唯一方法是讓它們在編譯時匹配。既可以在Debug中進行編譯,也可以在Release中進行編譯,但不要混合使用。