何が優先クロスプラットフォーム'main'の定義を使用力::program_options?
-
21-08-2019 - |
質問
私を開発しようとしていクロスプラットフォームを用いたC++と進みました。
このプログラムは*nix環境、プログラムを組んdefined'が主に次のように:
int main( const int argc, const char* argv[] )
{
...
}
この用途では、私のWindows環境では、Visual Studio2003年.
私が利用するようにして向上::program_optionsこの定義を取得しまコンパイルエラからprogram_options::店舗:
po::options_description desc("Supported options");
desc.add_options()...;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
エラー:
main.cpp(46) : error C2665: 'boost::program_options::store' : none of the 2 overloads can convert parameter 1 from type 'boost::program_options::basic_parsed_options<charT>'
with
[
charT=const char
]
c:\boost_1_38_0\boost\program_options\variables_map.hpp(34): could be 'void boost::program_options::store(const boost::program_options::basic_parsed_options<charT> &,boost::program_options::variables_map &,bool)'
with
[
charT=char
]
c:\boost_1_38_0\boost\program_options\variables_map.hpp(43): or 'void boost::program_options::store(const boost::program_options::basic_parsed_options<wchar_t> &,boost::program_options::variables_map &)'
while trying to match the argument list '(boost::program_options::basic_parsed_options<charT>, boost::program_options::variables_map)'
with
[
charT=const char
]
私のwchar_t機能による定義は主として以下の
int main( const int argc, wchar_t* argv[]){
...
}
その統んがリンク先のエラー:
main.obj : error LNK2019: unresolved external symbol "void __cdecl boost::program_options::store(class boost::program_options::basic_parsed_options<unsigned short> const &,class boost::program_options::variables_map &)" referenced in function _main
main.obj : error LNK2019: unresolved external symbol "public: __thiscall boost::program_options::basic_parsed_options<unsigned short>::basic_parsed_options<unsigned short>(class boost::program_options::basic_parsed_options<char> const &)" referenced in function "public: class boost::program_options::basic_parsed_options<unsigned short> __thiscall boost::program_options::basic_command_line_parser<unsigned short>::run(void)"
main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl boost::program_options::to_internal(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)" referenced in function "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl boost::program_options::to_internal<class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > >(class std::vector<class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > > const &)"
最後に、場合に初めて作業bgm作ってみましたデフォルトのメイン定義の設定コマンドで統とリンク:
int main( const int argc, _TCHAR* argv[]){
...
}
なので静な状態が心の本来の姿であるとWindowsが、この作品をしようでは*nix?そして、システムは、通常、定義_TCHARす。かないます。
うる適切な方法を定義する本作には、Windows、*nixスの向上::program_optionsのですか?
解決
const性に関連する問題のようです。試してみてください。
int main( int argc, char* argv[] )
{
// ...
}
他のヒント
int main()
や int main(int argc, char* argv[])
(a.k.a. int main(int argc, char** argv)
のC++の規格が承認フェースの通称です。
VisualStudioしようとするのに役立つかもしれない多くのクレイジーなうなど、さまざまな観点から把握に努めると共に、場合(1)したい main()
または WinMain()
(2)決定をしたい場合 char
sまたは wchar_t
s.まVisualStudioないという思いを大切にしていかにコンソール-アプリケーションが必要になる場合があり コsplit_winmain().
したい場合力 char
s(するものをお勧めします)する必要がある #undef UNICODE
.