我正在尝试使用Vs2008为Windows x64编译PCRE(v8.02)。
“NON-UNIX-USE”文件告诉我使用cmake生成.sln文件。
这样可行。
当我运行构建它成功时,有91个警告。
所有似乎都是尺寸转换警告。
我做错了吗? 我应该期待所有这些警告吗? 有没有其他人成功地在没有警告的情况下为Windows x64构建了PCRE?
答案 0 :(得分:4)
我联系了PCRE的维护者;显然警告是预料之中的。 他从未在Windows上构建它,更不用说在x64上构建Windows了。
编辑 - 截至2010年6月1日,他更改了最新版本的PCRE,可在svn://vcs.exim.org/pcre/code/trunk
处找到,以消除Windows / x64上的警告。
请查看:
svn co svn://vcs.exim.org/pcre/code/trunk pcre
答案 1 :(得分:3)
Windows 64位数据模型的工作方式,将32位代码编译为64位通常可以正常工作。尽管标准中显然没有保证long和int的大小相同,但LLP64保留了这一点。实际上,它们与ILP32中的大小相同。唯一不再安全的是尝试将指针存储在int中。
因此警告可能并不意味着存在真正的问题。
答案 2 :(得分:2)
“显然警告是预期的。他从未在Windows上构建它,更不用说在x64上构建Windows了。
编辑 - 截至2010年6月1日,他更改了最新版本的PCRE,可在svn://vcs.exim.org/pcre/code/trunk上找到,以消除Windows / x64上的警告。“
帮助OS社区做好工作!
作为参考,正如其他人在这里的答案中指出的那样,这些是“警告”,而不是“错误”。这意味着代码没有根本改变。从更改日志中,他添加了一个显式的强制转换,但这纯粹是因为警告不会打印出来。
BLOCKQUOTE> 16。添加了许多(int)强制转换以避免系统中的编译器警告 size_t是64位(#991)。
然而,当编译pcre为64位时,这确实可以保存我们其余的人,不知道这些是否应该修复。很多时候,应用程序将使用警告构建,例如,考虑“已弃用”警告。这意味着代码所依赖的API可能在将来的版本中不可用,但它现在可以使用。