2014-04-02 61 views
0

在VS編譯項目時可以發送參數嗎?在c編譯dll時傳遞參數

我有一個.dll文件,它已被編譯爲更多的國家。國家代碼需要代碼,這就是爲什麼我需要爲每個國家分開構建。所以,我在考慮是否有辦法在編譯時將國家ID作爲參數發送,否則每次需要爲某個國家/地區進行構建時都不要修改代碼?

+2

你有沒有考慮加載國家參數從配置文件? –

+0

預定義的預處理器宏? –

+1

預處理符號和多種配置? – sp2danny

回答

1

我會簡要地介紹一下上述每種方法的優缺點,儘管我傾向於使用區域設置文件方法,除非有非常強大的案例或要求,通過單獨編譯的dll進行混淆。

  • 通過區域設置資源文件加載不同國家/語言的內容;代碼將保持不變,但字符串,公式等都可以從文件系統上的資源加載,該文件系統具有所選語言環境的相關條目。
    • 優點:single codebase;多個區域文件;簡單的代碼維護;單個發行版以存在資源的所有語言環境爲目標;可以通過添加一個簡單的資源/區域設置文件
    • 缺點的很容易地擴展到新的地區:需要外部資源/區域設置文件
  • 使用#define包裝代碼,以便每次編譯途徑取決於特定#define
    • 優點:發佈更安全,因爲所有材料都在編譯的dll中;
    • 缺點:編譯更復雜,因爲它需要參數化;增加新的語言環境意味着代碼添加到代碼庫中;範圍錯誤被引入由語言環境的數量乘以支持+ 1個
  • 多種配置:這有相同的問題和優點使用#define小號