1

この場所でパスワード フィルターに関するコードをダウンロードしました。元のプロジェクトは vs2008 と vs2010 でコンパイルされました。vs2012 にアップデートしたところ、コンパイルできないことがわかりました。どうすればこれを修正できますか、ありがとう。

これはエラーメッセージです: エラー メッセージ

Error   1   error C2440: '=' : cannot convert from 'char *' to 'TCHAR *'    D:\SVN\branch\nobull-branch\util.cpp    72  1   passwdHk
Error   2   error C2664: 'int sprintf_s(char *,size_t,const char *,...)' : cannot convert parameter 1 from 'TCHAR *' to 'char *'    D:\SVN\branch\nobull-branch\util.cpp    89  1   passwdHk
Error   3   error C2664: '_strdup' : cannot convert parameter 1 from 'TCHAR *' to 'const char *'    D:\SVN\branch\nobull-branch\util.cpp    91  1   passwdHk
Error   4   error C2664: 'strlen' : cannot convert parameter 1 from 'TCHAR *' to 'const char *' D:\SVN\branch\nobull-branch\util.cpp    188 1   passwdHk
Error   5   error C2664: 'pshk_log_write_w' : cannot convert parameter 2 from 'const char [28]' to 'LPCWSTR'    D:\SVN\branch\nobull-branch\util.cpp    202 1   passwdHk
Error   6   error C2664: 'strlen' : cannot convert parameter 1 from 'TCHAR *' to 'const char *' D:\SVN\branch\nobull-branch\util.cpp    208 1   passwdHk
Error   7   error C2664: 'strlen' : cannot convert parameter 1 from 'TCHAR *' to 'const char *' D:\SVN\branch\nobull-branch\util.cpp    211 1   passwdHk
Error   8   error C2664: '_strdup' : cannot convert parameter 1 from 'TCHAR *' to 'const char *'    D:\SVN\branch\nobull-branch\util.cpp    224 1   passwdHk
Error   9   error C2664: 'strlen' : cannot convert parameter 1 from 'TCHAR *' to 'const char *' D:\SVN\branch\nobull-branch\util.cpp    229 1   passwdHk
Error   10  error C2446: ':' : no conversion from 'const char *' to 'TCHAR *'   D:\SVN\branch\nobull-branch\util.cpp    249 1   passwdHk
Error   11  error C2664: 'int _snprintf_s(char *,size_t,size_t,const char *,...)' : cannot convert parameter 1 from 'TCHAR *' to 'char *'   D:\SVN\branch\nobull-branch\util.cpp    249 1   passwdHk
Error   12  error C2664: 'int _snprintf_s(char *,size_t,size_t,const char *,...)' : cannot convert parameter 1 from 'TCHAR *' to 'char *'   D:\SVN\branch\nobull-branch\util.cpp    254 1   passwdHk
4

2 に答える 2

3

現在の苦境 (erahh... プロジェクト) では、Unicode コンパイルを必要としない可能性が非常に高くなります。

  1. プロジェクト エクスプローラーでプロジェクトを右クリックし、[プロパティ...] を選択します。
  2. プロパティ ダイアログの最上部には、構成選択ドロップダウン リストがあります。おそらく、すべての構成を変更したいと思うでしょう(何らかの奇妙な理由で非 Unicode デバッグをビルドしたいが、Unicode リリースをビルドしたい場合を除きます)。すべての非 Unicode が必要な場合 (そしておそらくそうする場合)、[すべての構成] を選択します。
  3. [構成プロパティ] のすぐ下にある左側のペインで、[全般] を選択します。
  4. 右側のペインの [Project Defaults] で、[Character Set] を見つけます。
  5. 現在 Unicode 文字セットに設定されている場合、MBCS 機能を使用する予定がない場合は、「マルチバイト文字セット」または「未設定」に変更してください。
  6. プロジェクト ファイルを保存し、ワールドを再構築します。

注: API 内の関数呼び出しの一部は、マクロ定義によって選択されることが望ましいです。特に私が心配しているのはpshk_log_write_w()、Unicodeとしてコンパイルしていたために選択されたことを意味する名前です(願っています)。運が良けれ pshk_log_write_a()ば、上記の変更を行ったときに意図したターゲットとして自動的に選択される、その関数の狭いバージョンが関連付けられています。そうでない場合は、ワイドからナローへの変換が必要な場所がいくつかあるかもしれませんが、そうでないことを願っています。そうするのは苦痛です。

于 2013-01-14T05:24:00.537 に答える
2

TCHAR は、8 ビット文字 (char) または 16 ビット文字 (wchar_t) 用の Microsoft のマクロで、Unicode 文字列と ASCII 文字列を区別するのに役立ちます。SDK には 2 つの異なる API セットがあるため、コンパイラはコンパイラです。Visual Studio 2012 のデフォルトは char ではなく wchar_t のようです。プロジェクトのオプションを使用して無効にすることができます。プロジェクトを右クリックし、[プロパティ] をクリックします。一般セクションの下に、Character Set オプションがあるはずです。Use Unicode character set から Use MultiByte characters に変更します。詳細については、次のページを参照してください。http://msdn.microsoft.com/en-us/library/c426s321%28v=vs.71%29.aspxお役に立てば幸いです。

于 2013-01-14T04:35:06.367 に答える