
在EWARM 8.x的版本调用EWARM7.x生成的库会出现“Warning [Lt009] Inconsistent wchar_t size”链接器警告,原因是wchar_t在EWARM v7.xx和EWARM v8.11及之后版本的大小和编码不同。 EWARM v7.80和更早的版本,wchar_t的大小是两个字节,在EWARM v8.11及之后的版本是四个字节。此外,这些版本对wchar_t对象的内部编码也不同。 也就是说,用v7.80和v8.11构建的目标文件组合起来将生成一个链接器警告,如果应用程序使用wchar_t,则该行为将是不可预测的。通常,强烈建议只使用一个版本的目标代码。对于像v7.8到v8.11这样的大的升级,应该重新构建所有代码。 8 B$ _5 \+ n4 Y, y) `% _; Q! i如果选择不重构全部的代码,那么至少也要采取以下的操作: (1) 在版本v7用C++重新构建库的代码 (2) 如果库确实包含wchar_t,则使用v8.11版本重新构建库 (3) 如果库是用v7构建,不包含wchar_t,而且使用v8.11(或更高版本)构建的应用程序实际上可以正常工作,在这种情况下可以选择忽略警告消息。要抑制警告消息,可以按照如下操作: a. 选择Project>Options>Linker> Diagnostics> b. 选择Suppress these diagnostics并指定“Lt009” c. 点击OK 注意:EWARM生成的库中使用了wchar_t,就必须进行重构才能在v8.11及后面的版本上使用。 |