boost::serialization をワイド文字で使用する場合について – プログラミング – Home

通知
すべてクリア

[解決済] boost::serialization をワイド文字で使用する場合について


Takahashi
 Takahashi
(@Takahashi)
ゲスト
結合: 21年前
投稿: 45
Topic starter  

環境 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 が未解決です。

#長くてすいません

何かライブラリのリンクが足りないのはわかるのですが、
いろいろ調べてもいまいちわからず質問いたしました。

参考ページ(出来れば日本語)、ご指摘等よろしくご教授お願いいたします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

wchar_tをunsigned short扱いにしてるフシがあります。
コンパイル・オプションに /Zc:wchar_t が付いてるか、確認してください。
# これで解決するか、自信はありませんけど


返信引用
Takahashi
 Takahashi
(@Takahashi)
ゲスト
結合: 21年前
投稿: 45
Topic starter  

επιστημηさんレスありがとうございます。

ご指摘通り /Zc:wchar_t オプションをつけたところあっさり解決いたしました。
ありがとうございます。

# さすがというか・・・私の場合ライブラリリンク関係と勝手に思いこんでいたのもあ
りますが、
# ぶっちゃけ全くわからなかった・・・

ところで、ワイド文字にしたところで、相変わらず encoding=UTF-8 ちょっと期待はず
れかな。
しかし、タグに全角文字が指定できるのでかなり使い勝手は向上しますね。
正規の XML じゃないけど、趣味のプログラムで設定ファイルに使うとかでは、便利に使
えそうです。

どうもありがとうございました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

おぉぉ、どんぴしゃ。偉いぞ自分 (^^


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました