1

私の Visual C++ プロジェクトで TinyXML を動作させるのに苦労しています。

XML 構成ファイルを読み取る Windows Mobile 5.0/CE アプリケーションを作成しようとしています。ダイアログ ボックスに基づく MFC スマート プロジェクトで Pocket PC 2003(ARMV4) アーキテクチャを使用しています。空のプロジェクトでも、ライブラリをコンパイルしようとすると、同じ結果が得られ、その理由がわかりません。

プロジェクトに次の 6 つのファイルを追加しました。

- 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 に答える