環境 Windows XP SP2, VC.NET 2003, コンソール
boost::serialization についての質問です。
ttp://hw001.gate01.com/eggplant/tcf/cpp/boost_serialization.html
のページを参考にワイド文字ではない XML(UTF-8) での保存は出来ました。
次にワイド文字にしようと以下のようなテストコードを書きコンパイルすると
リンクエラーが表示されコンパイルが出来ませんでした。
<テストコード>
#include stdafx.h
#include <fstream>
#include <boost/serialization/nvp.hpp>
#include <boost/archive/xml_woarchive.hpp>
#include <boost/archive/xml_wiarchive.hpp>
#define BOOST_LIB_NAME boost_serialization
#include <boost/config/auto_link.hpp>
#define BOOST_LIB_NAME boost_wserialization
#include <boost/config/auto_link.hpp>
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
std::wofstream ofs(c:\\test.xml);
if(!ofs) return 2;
boost::archive::xml_woarchive ar(ofs);
int i = 10;
ar << boost::serialization::make_nvp(Test, i);
return 0;
}
<エラーの内容>
リンクしています...
TestXML2.obj : error LNK2019: 未解決の外部シンボル public: __thiscall
boost::archive::xml_woarchive_impl<class
boost::archive::xml_woarchive>::xml_woarchive_impl<class
boost::archive::xml_woarchive>(class std::basic_ostream<unsigned short,struct
std::char_traits<unsigned short> > &,unsigned int)
(??0?$xml_woarchive_impl@Vxml_woarchive@archive@boost@@@archive@boost@@QAE@AAV?$basic_ostream@GU?$char_traits@G@std@@@std@@I@Z)
が関数 public: __thiscall boost::archive::xml_woarchive::xml_woarchive(class
std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >
&,unsigned int)
(??0xml_woarchive@archive@boost@@QAE@AAV?$basic_ostream@GU?$char_traits@G@std@@@std@@I@Z)
で参照されました。
TestXML2.obj : error LNK2019: 未解決の外部シンボル public: __thiscall
boost::archive::basic_text_oprimitive<class std::basic_ostream<unsigned
short,struct std::char_traits<unsigned short> > >::~basic_text_oprimitive<class
std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >
>(void)
(??1?$basic_text_oprimitive@V?$basic_ostream@GU?$char_traits@G@std@@@std@@@archive@boost@@QAE@XZ)
が関数 public: virtual __thiscall boost::archive::xml_woarchive_impl<class
boost::archive::xml_woarchive>::~xml_woarchive_impl<class
boost::archive::xml_woarchive>(void)
(??1?$xml_woarchive_impl@Vxml_woarchive@archive@boost@@@archive@boost@@UAE@XZ)
で参照されました。
Debug/TestXML2.exe : fatal error LNK1120: 外部参照 2 が未解決です。
#長くてすいません
何かライブラリのリンクが足りないのはわかるのですが、
いろいろ調べてもいまいちわからず質問いたしました。
参考ページ(出来れば日本語)、ご指摘等よろしくご教授お願いいたします。
wchar_tをunsigned short扱いにしてるフシがあります。
コンパイル・オプションに /Zc:wchar_t が付いてるか、確認してください。
# これで解決するか、自信はありませんけど
επιστημηさんレスありがとうございます。
ご指摘通り /Zc:wchar_t オプションをつけたところあっさり解決いたしました。
ありがとうございます。
# さすがというか・・・私の場合ライブラリリンク関係と勝手に思いこんでいたのもあ
りますが、
# ぶっちゃけ全くわからなかった・・・
ところで、ワイド文字にしたところで、相変わらず encoding=UTF-8 ちょっと期待はず
れかな。
しかし、タグに全角文字が指定できるのでかなり使い勝手は向上しますね。
正規の XML じゃないけど、趣味のプログラムで設定ファイルに使うとかでは、便利に使
えそうです。
どうもありがとうございました。
おぉぉ、どんぴしゃ。偉いぞ自分 (^^