1:
C++/CLIでvectorクラスを使いたいのですが、以下のようなコードをコンパイルすると、その下のようなエラーが出てコンパイルできません。
#using "System.dll" #include<vector> #include<algorithm> using namespace std; using namespace System; int main() { vector<int>a; std::fill_n(std::back_insert_iterator<vector<int> >(a),100,100); for(vector<int>::iterator itr=a.begin();itr!=a.end();itr++){ Console::WriteLine("{0}",*itr); } return 0; }をコンパイルすると、次のようなエラーが出ます。
error LNK2028: 未解決のトークン (0A0000DA) "extern "C" int __cdecl _CrtDbgReportW(int,wchar_t const *,int,wchar_t const *,wchar_t const *,...)" (?_CrtDbgReportW@@$$J0YAHHPB_WH00ZZ) が関数 "public: int const & __thiscall std::_Vector_const_iterator<int,class std::allocator<int> >::operator*(void)const " (??D?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@$$FQBEABHXZ) で参照されました。
error LNK2019: 未解決の外部シンボル "extern "C" int __cdecl _CrtDbgReportW(int,wchar_t const *,int,wchar_t const *,wchar_t const *,...)" (?_CrtDbgReportW@@$$J0YAHHPB_WH00ZZ) が関数 "public: int const & __thiscall std::_Vector_const_iterator<int,class std::allocator<int> >::operator*(void)const " (??D?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@$$FQBEABHXZ) で参照されました。
APIの関数を呼び出した際にも同じエラーが出たのですが、エラー番号などでググってみて、APIのほうは設定にミスがあり、それを直すとリンカエラーもなくなり解決したのですが、STLのほうは全くといっていいほど解決しません。なぜでしょうか?
2:
C++/CLIがWindows APIとの共存が可能だということで、たぶんMFCやATLなどのクラスライブラリなども共存可能と思いますが、MFCとATLのうち、.NETとの共用を考えたら、どちらのほうを選択するほうがいいのでしょうか?