Wednesday, December 29, 2021

使用 CodeSynthesis XSD 產生 KML schema 的 C++ 程式碼的問題

 [問題描述]

1. 使用 CodySynthesis XSD, 產生 kml schema 的 C++ 程式碼。

2. 產生的程式碼在使用時,  發生以下錯誤:

    [ogckml22.hxx]

    const near_optional&

    near () const;

    near_optional&

    near ();


    錯誤為:

嚴重性 程式碼 說明 專案 檔案 隱藏項目狀態

錯誤 C2059 語法錯誤: '<parameter-list>'

錯誤 C2238 在 ';' 之前有未預期的語彙基元 


[追查原因]

1. 如果沒有引用 windows.h 則不會發生問題,因此與 windows.h 的內容有關。

2. 在 VC 使用[移至定義],發現 minwindef.h 已經定義 near。


[解決方式]

使用 CodeSynthesis XSD 時, 增加參數

--reserved-name near

產生的程式碼會以 near_ 取代 near,就不會和 windows 定義的 near 衝突。


PS. OpenDRIVE 裏的 signals 和 Qt 的 signals 的衝突也以同樣方式處理。


No comments:

Post a Comment

[Qt] 執行檔需要哪些 Dll?

 1. 使用 Qt  的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。   a. 把執行檔 myProgram.exe 放在某個資料夾。   b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...