2010-09-19 74 views
1

在VS2008 IDE中,我編寫了封裝來封裝VC dll(vc.dll)爲Com(com.dll),並且vc.dll將由c.exe調用。COM:如何選擇編譯選項?

qutsion#1: 我發現vc.dll的編譯選項是字符集:未設置 我的問題是,我應該使用哪個字符集來編譯com項目?

問題2: 如果我們還爲com項目設置了Char設置爲Not Set,那麼我應該如何處理函數接口中的字符串呢?因爲有很多字符串類型,比如TCHAR和BSTR,以及_bstr_t哪個更適合我的Com項目?

問題#3: 我應該如何設置字符集爲C項目(C.exe)?

回答

0

有零的理由留下來避免設置字符集爲Unicode。在過去的17年中,Windows一直是原生的Unicode操作系統。 COM自動化只能使用Unicode字符串。它實際上並不重要,因爲你應該在COM代碼中使用BSTR,它不受該設置的影響。

在接口聲明中始終使用BSTR。 _bstr_t類實際上是一個圍繞BSTR的方便包裝類,可以輕鬆操縱這些字符串。 TCHAR是陳舊的,與COM自動化不兼容。

客戶端應用程序的推理過程相同。該設置無關緊要,因爲您強制客戶端在您的接口聲明中使用BSTR。但是在該應用程序的其他代碼中不使用Unicode是陳舊的。如果Unicode字符串包含無法轉換爲系統代碼頁的字符,那麼您必須編寫的代碼將BSTR轉換爲const char *並返回,這只是浪費您的時間和強大的丟失來源。所有主流的COM客戶端(Java,.NET,Javascript和其他腳本語言)都使用Unicode。