1

我正在努力让 TinyXML 在我的 Visual C++ 项目中工作。

我正在尝试创建一个读取 XML 配置文件的 Windows Mobile 5.0/CE 应用程序。我在基于对话框的 MFC 智能项目中使用 Pocket PC 2003(ARMV4) 架构。即使在一个空白项目中,只是试图编译库,它也会给我相同的结果,我不明白为什么。

我在我的项目中添加了这六个文件:

- tinyxml.h
- tinystr.h
- tinyxml.cpp
- tinystr.cpp
- tinyxmlerror.cpp
- tinyxmlparser.cpp

它在编译时给了我这个:

tinyxml.cpp
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(44) : error C3861: 'fopen_s' : identificateur introuvable
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(116) : error C3861: '_snprintf_s' : identificateur introuvable
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(1239) : error C3861: 'sscanf_s' : identificateur introuvable
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(1246) : error C3861: 'sscanf_s' : identificateur introuvable
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(1255) : error C3861: '_snprintf_s' : identificateur introuvable
..\..\tinyxml_2_6_2\tinyxml\tinyxml.cpp(1266) : error C3861: '_snprintf_s' : identificateur introuvable

identificateur introuvable可以翻译为identifier not found

有谁知道为什么?

谢谢 !

4

1 回答 1

2

我终于解决了我的问题。我对 PugiXML 等其他库也有同样的问题。

实际上,它是由前面引用的函数的声明引起的:

fopen_s
_snprintf_s
sscanf_s

似乎 Windows Mobile 架构无法处理它们。它们是根据 Visual Studio 的版本在代码中声明的:

#if !defined(_MSC_VER) || _MSC_VER >= 1300
    declaration (fopen_s, sscanf_s ...)
#else
    other declaration

通过更改声明的条件(例如 MSC_VER 为 4000),库声明了允许我正确重新编译的其他函数。它现在在 Windows Mobile 上运行。

希望这会有所帮助!

于 2012-01-02T15:22:56.767 回答