MSVC - eiichiromomma/CVMLAB GitHub Wiki

MSVC

無料配布のVisual C++ 20xx Express Edition 日本語版を使う

OpenCV関連はこちら

※ 古い

ヘッダファイルとライブラリファイルの追加

参照パスの追加

  1. "ツール"-"オプション"-"プロジェクトおよびソリューション"-"VC++ディレクトリ"で"ディレクトリを表示するプロジェクト"を"ライブラリファイル"として、必要なフォルダをフルパス(ドライブ名から)で指定。
  2. "ツール"-"オプション"-"プロジェクトおよびソリューション"-"VC++ディレクトリ"で"ディレクトリを表示するプロジェクト"を"インクルードファイル"として、必要なフォルダをフルパス(ドライブ名から)で指定。

ライブラリの参照

"プロジェクト"-"プロパティ"-"構成プロパティ"-"リンカ"-"入力"-"追加の依存ファイル"に必要なライブラリファイル(*.lib)を追加する。

但し、事前にVCでのライブラリパスの追加の手順でライブラリの置いてあるフォルダを参照できるようにしておくこと。

ワイルドカード

プログラムに*.jpgのようなワイルドカードを展開させる方法

ワイルドカードへのWindowsのシェルの挙動

Unixではワイルドカードはシェルが勝手に展開してくれるのだが、Windowsの場合、プログラムに作業が任されている。

    #include <stdio.h>
    main(int argc, char** argv)
    {
      int i;
      for(i=0;i<argc;i++){
        fprintf(stderr,"%s\n",argv[i]);
      }
      return 0;
    }

のようなプログラムを作り、を引数として実行させるとUnixでは自身のプログラム名の後に、そのフォルダ内のファイルが表示されるのに対し、Windowsではが表示されてしまう。

setargv.obj

プロジェクトのプロパティ-構成プロパティ-リンカ-入力-追加の依存ファイルにsetargv.objを追加すれば、dirなどのWindowsの標準コマンドレベルのワイルドカード展開は行なえるようになる。

コマンドラインアプリケーションのオプション解析

GNU getopt

これを使うのが手っ取り早い。

但しGNUライセンスなので、これを含むプログラムを公開する場合ソースコードの開示が必要になるので注意。

使い方

getopt.hとgetopt.cを切り出して使いたいプロジェクトのフォルダに保存してからプロジェクトにそれぞれを追加する。 あとは

#include "getopt.h"

として

で解説されているような使い方が出来る。

その他

  • getpot C++で書かれている。これはLGPL。
  • xgetopt 基本機能だけだがPublic domainなので商用にも使えるらしい。同サイトへの登録が必要。

#環境を移行すると出てくるワーニングメッセージの消し方

CRTの変更

メモリや文字列を弄る関数でのバッファ溢れの対応としてMicrosoftが策を打ち出したらしい。 毎度の独自拡張っぽいので話がややこしくなっているようだ。

vcam.cpp(1828) : warning C4996: 'strcpy' が古い形式として宣言されました。
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(73) : 
'strcpy' の宣言を確認してください。
1>        メッセージ: 'This function or variable may be unsafe. Consider using strcpy_s instead. 
To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

のようなメッセージが出て本当に修正が必要なワーニングやエラーを見落す恐れがある。

簡単な対策

コンパイルの際に_CRT_SECURE_NO_DEPRECATEを宣言すれば良い。 "プロジェクト"-"プロパティ"-"構成プロパティ"-"C/C++"-"コマンドライン"の"追加のオプション"に /D "_CRT_SECURE_NO_DEPRECATE" を記述する。

⚠️ **GitHub.com Fallback** ⚠️