C++/CLIについて。
Posted: 2008年5月05日(月) 17:22
2つ質問があります。よろしくお願いします。
1:
C++/CLIでvectorクラスを使いたいのですが、以下のようなコードをコンパイルすると、その下のようなエラーが出てコンパイルできません。
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との共用を考えたら、どちらのほうを選択するほうがいいのでしょうか?
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との共用を考えたら、どちらのほうを選択するほうがいいのでしょうか?