今日のクリップ

PC

PC×ITちょっとした相談

 じつはさほど珍しくもないタイプのブログなんですが、生産性を考える上ではバカにできないノウハウだよなぁ、ということで。
 この分野はどんどんコモディティ化していくはずなので、人脈なり何か別のビジネスチャンスなりと組み合わせていかないとすぐに干上がってしまう。社内で、こういうことを担当する役割になったりすると、つらいだろうなぁ。

ジャストシステム×警察署

 警察向けSuiteパッケージもあるようです。

Vista×インデックスサービス

 Windows Vista/2008で追加されたファイル属性「N」は、インデックスサービスの対象外であることを示す。

開発関連

MFCレガシーコード×VC++ CRT

 MFCライブラリを含むレガシーコードと、C++が微妙な感じでブレンドされていると、以下のようなリンクエラーが出る可能性がある。

nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) はすでに LIBCMT.lib(new.obj) で定義されています
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMT.lib(delete.obj) で定義されています
Release/HogeHoge.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー

 その原因は、CRTライブラリ内のnew演算子の定義と、MFCライブラリ内のnew演算子の定義が衝突しているからなわけですが、最初に書いたようにコードが微妙にブレンドされていると、どちらかのライブラリを外して対処する、というわけにもいきません。

 というわけで、この記事で紹介されている二つの対処方法のうち、いずれかを入れます。

  • (MFCを使っている場合に限り)Afx.hをインクルードしておく
    • このヘッダは、通常StdAfx.h内でインクルードされます
  • 「Nafxcw.lib」と「Libcmt.lib」を、いったん「無視するライブラリ」に指定して、リンカのコマンドライン内で「Nafxcw.lib」、「Libcmt.lib」の順番に読み込むように設定する