2016-02-05 58 views
1

我正在使用FreeTDS庫來將C++連接到MSSQL,並且在編譯時出現以下錯誤。使用FreeTDS庫時出現衝突聲明'typedef int RETCODE'

In file included from pa_main.cpp:16:0: /usr/local/include/sybdb.h:120:13: error: conflicting declaration ‘typedef int RETCODE’ typedef int RETCODE;

In file included from /usr/include/sql.h:19:0, from pa_sql_db.h:16, from pa_main.cpp:11: /usr/include/sqltypes.h:268:33: note: previous declaration as ‘typedef short int RETCODE’ typedef signed short RETCODE;

我明白的是,使用相同的名稱定義爲RETCODE不同大小的INT了unixODBC和freetds的庫。

我該如何避免這種情況?任何人都可以請爲這個問題建議一個解決方法?

+0

呃,聽起來像沒有命名空間衝突。祝你好運! –

回答

2

您正在處理與C向後兼容的兩個庫。C沒有名稱空間,因此它們會污染全局名稱空間及其typedef。我建議將每個庫的代碼保存在不同的翻譯單元中。

+0

我真的很感謝你的建議。你能提供樣品嗎? –

+0

你的建議真的幫了我。我把這些圖書館分成兩個翻譯單位,現在它的工作很好。 –