我有一個使用兩個第三方庫的項目,這兩個庫都在其頭文件中使用TCHAR。不幸的是,一個庫被編譯爲多字節(稱爲庫a),另一個被編譯爲Unicode(稱爲庫b)。在具有不同字符集的庫的頭文件中處理TCHAR
現在我明白了,TCHAR被預編譯器替換爲wchar或char,具體取決於構建選項。因此,當編譯庫a時,任何需要使用TCHAR類型參數的方法都被設置爲期望char類型的參數,並且庫b中的方法被設置爲期望wchar類型的參數。
不幸的是我的消費應用程序也必須選擇一個字符集。如果我選擇Unicode,那麼我爲庫a包含的頭文件告訴我該方法需要一個wchar,因爲當我在頭中編譯TCHAR時,它們被解釋爲wchars。這包括在結構中定義的TCHARS。我已經在實踐中證實了這種行爲,當我分配並傳遞一個TCHAR緩衝區時,我返回垃圾,因爲它用多字節數據填充了我的wchar緩衝區。
我的問題是:在同一個應用程序中是否有一個乾淨的方式來使用這兩個庫?我可能在如何使用這些庫方面做錯了什麼?
感謝您的回答,那就是我傾向的方向。我要出去一趟,問問什麼可能是一個愚蠢的問題。使用包裝器與僅編輯庫的頭文件以使其與結構和導出函數的編譯定義相匹配的優點是什麼?我在想象這與大家一起搜索和替換TCHAR一樣簡單。我是否簡化了它? – MichaC 2009-05-02 05:28:15