我試圖在沒有使用C++編程超過十年之後,向傳統的C++ Win32 DLL添加適當的錯誤報告。傳統C++ Win32 DLL中的空字符串終止 - 有更好的方法嗎?
這一直是空的工作令人難以置信的單調乏味的強制提醒在C/C++終止字符串 - 更不用說潛在的緩衝區溢出和安全問題。也許MFC CString的或STL庫 -
我使用了更先進的字符串庫考慮。
編輯
DLL被兩個舊版本我們的軟件 - 用C++編寫;和更新的版本 - 用C#編寫。
編譯器是VS2008。
對於第一遍,我正在登錄到標準Windows事件日誌,因爲將錯誤消息傳回到DLL客戶端將是一個很大的體系結構更改(當前體系結構非常糟糕,多個失敗模式被合併爲一個布爾型通過/失敗返回值,這個值一直傳遞迴調用堆棧。不用說,這會讓問題診斷出一場噩夢)。但我希望在稍後的日子提高這一點。
字符串庫問題
由於這是一個DLL,這甚至是一個好主意?
是否有任何特殊的DLL注意事項?
我應該知道的陷阱?
比其他用於此目的的一個圖書館更好?
空字符串問題
如果我堅持用空值終止的,其設定的字符串函數我應該使用? MS幫助文檔不鼓勵使用舊的C函數(例如strcat等)。但現在似乎有許多其他選項可用(例如_tcscat,_mbscat,wcscat等)。我應該使用哪個,爲什麼?
你使用的是什麼版本的VC++編譯器?正如@Remy指出的那樣,錯誤報告如何以及在哪裏被消費是這裏最重要的問題。您是否考慮過像log4cpp這樣的現有基礎架構? – 2012-04-19 13:31:43
@SteveTownsend - 請參閱我的編輯 – 2012-04-19 15:20:13
我會看看log4cpp。有一個內置的Windows事件日誌appender,您可以稍後輕鬆轉換(或使用多個appender)。對於我來說,這是一個比您決定如何在現有代碼中處理char *更爲重要的決策。當需要讓客戶端應用程序直接使用日誌數據時,可以解決這個問題,並且在C++/C#客戶端中存在相關的編組問題。現在聽起來像是快速添加問題調試信息是優先考慮的。 – 2012-04-19 15:26:52