Компиляция TinyXML - Visual C ++ (Карманный ПК)

Я изо всех сил пытаюсь заставить TinyXML работать в моем проекте Visual C ++.

Я пытаюсь создать приложение Windows Mobile 5.0 / CE, читающее файл конфигурации XML. Я использую архитектуру Pocket PC 2003 (ARMV4) в основе интеллектуального проекта MFC на диалоговых окнах. Даже в пустом проекте, когда я просто пытаюсь скомпилировать библиотеку, я получаю тот же результат, и я не понимаю почему.

Я добавил в свой проект эти шесть файлов:

- 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

идентификатор introuvable можно перевести как идентификатор не найден.

Кто-нибудь знает почему?

Спасибо !


person Dunky    schedule 22.12.2011    source источник


Ответы (1)


Я наконец решил свою проблему. У меня была такая же проблема с другими библиотеками, такими как 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.

Надеюсь, это поможет!

person Dunky    schedule 02.01.2012
comment
В моем случае мне пришлось изменить некоторые из # if, чтобы они были разными под CE. - person korbes; 13.02.2014