1

我正在为我的最终项目构建一个 GUI。这个项目使用 pugixml 作为 xml 解析器来读取一些数据。一切都在控制台模式下工作。

所以我开始了一个新的 windows 窗体项目,并添加了我编写的所有头文件。我设计了我的 GUI 等。当我尝试编译时,所有东西都会编译,但是:

pugixml.cpp(5627): error C2440: 'return' : cannot convert from 'System::String ^' to 'const pugi::char_t *' No user-defined-conversion operator available, or 无法将托管类型转换为非托管类型

这是错误来自的代码:

const char_t* convert_number_to_string_special(double value) { #if defined(_MSC_VER) || 定义(BORLANDC)如果(_finite(值))返回(值== 0)?PUGIXML_TEXT("0") : 0; if (_isnan(value)) return PUGIXML_TEXT("NaN"); 这一行----> return PUGIXML_TEXT("-Infinity") + (value > 0);

我试图更改项目的配置,但没有得到任何直接的结果。

有什么线索吗?我将不胜感激!

提前致谢!

4

1 回答 1

2

这是兼容性错误;不幸的是,pugixml 1.0 没有使用 C++/CLI 进行全面测试(据我所知,这是 C++/CLI 的唯一问题,因此在修复此问题后,您可以安全地使用 pugixml)。

您可以从存储库 (http://pugixml.googlecode.com/svn/trunk/) 获取最新版本或手动应用补丁:替换行

return PUGIXML_TEXT("-Infinity") + (value > 0);

return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity");

于 2011-07-15T01:44:50.190 回答