2016-02-05 75 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

你的建议真的帮了我。我把这些图书馆分成两个翻译单位,现在它的工作很好。 –