C++問題メモ

2098 ワード

以前はjavaをやっていたのですが、C++は何年も荒廃していました.ここ数日javaでdllを調整する必要があるので、C++の復習も多少少なくなりました.
本文は出会った小さな問題をメモして、今後使って調べることができます.
 
1,clコマンドを手動で使用してcppをコンパイルすると「fatal error C 1034:XXX.h:no include path set」という問題が発生する
問題解析:このようなno include問題が発生したのは,一般にINCLUDE環境変数が設定されていないためである.コンパイラはincludeのファイルをどこで探すか分からないので、INCLUDE環境変数を設定する必要があります.
解決:[マイコンピュータ]-[プロパティ]-[拡張]-[環境変数]-[システム環境変数]-[新しい環境変数][INCLUDE]値は、「C:Program FilesMicrosoft Visual StudioVC 98INCLUDE;C:Program FilesMicrosoft Visual StudioVC 98MFCINCLUDE;C:Program FilesMicrosoft Visual StudioVC 98ATLINCLUDE」(具体的にはVCのインストールパスを参照してください.私はVC 6.0をインストールしています).その後、手動で「cl/c」コマンドを使用してコンパイルすると、上記の問題は発生しません.
 
ps:順路にLIB環境変数を追加することもできます.値は「C:Program FilesMicrosoft Visual StudioVC 98LIB;C:Program FilesMicrosoft Visual StudioVC 98MFCLIB」です(コネクタlinkerが接続段階でローカルライブラリlibの位置を知るために設定します).
 
2,.NETマニュアルセットCOMコンポーネントで、regasmが内部プログラムではないことを示すエラーが発生した場合、regasmが存在するディレクトリを環境変数pathの後に追加することができます(加えて前にセミコロン";")regasmパス:「C:WINDOWSMicrosoft.NETFrameworkv 2.0.50727」.これでregasmプログラムが見つかります.
しかし、グループブックには次のエラーが発生しました.「RegAsm:error RA 0000:「(パス)XXX.dll」は有効ではありません..NETプログラムセットではないため、ロードできませんでした」.
資料を探してから気づいたのです.NET Frameworkのバージョンは正しくありません.私のは4.0バージョンなので、4.0対応のディレクトリを選んで、「C:WINDOWSMicrosoft.NETFrameworkv 2.0.50727」の前のレベルのディレクトリに戻って、4.0のディレクトリを見つけます:“C:WINDOWSMicrosoft.NETFrameworkv 4.0.30319”、pathを修正して、コマンドを実行して、OKです(大物は自分の対応する.NET FrameWorkのバージョンカタログを選べばいいです)
 
 
3,stringはcstringを回転して文字化けします
使用する
 
  string msg("test");
  CString tempM(msg.c_str());
  tempM.Format(_T("%s"),msg.data());
 
変換後のCStringは文字化けしになります.stringは単バイトで、CStringは二バイトです.format変換に問題があります
CStringのコンストラクション関数で直接変換できます.
 
 
 string msg("test");
CString tempM(msg.c_str());

これはもっと簡単です.
 
 
 
4,VS 2010のActive X control test containerはもうVC 6のようではありません.0では同様に添付ファイルプログラムとして使用され、Microsoft Visual Studio 10.0Samples1033VC 2010 Samplesに位置するケースsampleとして使用されます.zip\C++\MFC\ole\TstCon