計算機設定/VisualStudio2005 - PukiWiki

計算機設定

2008/09/16

Visual Studio 2005 で初歩的なCアプリケーションを作成する方法

Windowsコマンドプロンプトにて

  • 準備 (バッチファイル)
    • cc.bat
      Set CC8="C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe"
      Set INCLUDE1="C:\Program Files\Microsoft Visual Studio 8\VC\include"
      Set INCLUDE2="C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include"
      %CC8% %1 /c /I%INCLUDE1% /I%INCLUDE2%
    • link.bat
      Set LINK8="C:\Program Files\Microsoft Visual Studio 8\VC\bin\link.exe"
      Set LIBPATH1="C:\Program Files\Microsoft Visual Studio 8\VC\lib"
      Set LIBPATH2="C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib"
      Set LIBS=kernel32.lib user32.lib gdi32.lib winspool.lib
         comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
         uuid.lib odbc32.lib odbccp32.lib
      %LINK8% /LIBPATH:%LIBPATH1% /LIBPATH:%LIBPATH2% %1 %LIBS%
  • hello.c (サンプル・プログラム (例1))
    #include <stdio.h>
    void main()
    { 
    	printf("Hello World!\n");
    }
  • コンパイル・リンク・実行
    cc hello.c
    link hello.obj
    hello.exe
    Hello World!

OpenGL (グラフィックス・ライブラリ)

  • http://www.xmission.com/~nate/glut.html
    glut.h, glut32.lib, glut32.dll をソースファイルと同じフォルダに入れる.
  • Sample.c (サンプル・プログラム (例2))
    #include <math.h>
    #include "glut.h"
    #define POINTS 1000
    double x[POINTS], y[POINTS];
    void display(void);
    void main(int argc, char *argv[])
    {
      int i;
      for (i = 0; i < POINTS; i++) {
        x[i] = 6.0 * ((double)i / (double)POINTS) - 3.0;
        y[i] = cos(x[i]);
      }
      glutInit(&argc, argv);
      glutCreateWindow("a graph of cos(x)");
      glutDisplayFunc(display);
      glMatrixMode(GL_PROJECTION);
      gluOrtho2D(-3.0, 3.0, -3.0, 3.0);
      glClearColor(1.0, 1.0, 1.0, 1.0);
      glutMainLoop();
    }
    void display(void)
    {
      int i;
      glClear(GL_COLOR_BUFFER_BIT);
      glColor3d(0.0, 0.0, 0.0);
      glBegin(GL_LINES); glVertex2d(-3.0, 0.0); glVertex2d(3.0, 0.0); glEnd();
      glBegin(GL_LINES); glVertex2d(0.0, -3.0); glVertex2d(0.0, 3.0); glEnd();
      glColor3d(1.0, 0.0, 0.0);
      glBegin(GL_POINTS);
      for (i = 0; i < POINTS; i++) {
        glVertex2d(x[i], y[i]);
      }
      glEnd();
      glFlush();
    }
  • コンパイル・リンク・実行
    cc sample1.c
    link sample1.obj
    sample1.exe
    sample1.jpg

OpenGL テクスチャを使ったサンプル

CLAPACK 3.1.1 (数値計算ライブラリ)

  • 準備
    • http://www.netlib.org/clapack/
    • f2c.h clapack.h を持ってくる. (例えばCLAPACK-3.1.1-Visual Studio.zipのINCLUDEの中)
    • LIB_WINDOWS/prebuilt_libraries_windows.html から libf2c.lib blas.lib clapack.lib を持ってくる.
  • clapack1.c (サンプルプログラム (例3))
    #include <stdio.h>
    #include "f2c.h"
    #include "clapack.h"
    #pragma comment(lib, "libf2c.lib")
    #pragma comment(lib, "blas.lib")
    #pragma comment(lib, "clapack.lib")
    #define N 4
    void main(void)
    {
      long i,j,n,nrhs=1,ipiv[N],lda,ldb,info;
      double a[N*N],b[N];
      n=N,lda=N, ldb=N;
      a[ 0]=1;a[ 4]= 0;a[ 8]= 2;a[12]=1;
      a[ 1]=3;a[ 5]=-1;a[ 9]=-1;a[13]=1;
      a[ 2]=2;a[ 6]= 1;a[10]= 8;a[14]=1;
      a[ 3]=1;a[ 7]=-1;a[11]=-1;a[15]=4;
      b[ 0]=3;b[ 1]= 4;b[ 2]= 5;b[ 3]=7;
      dgesv_(&n,&nrhs,a,&lda,ipiv,b,&ldb,&info);
      for(i=0;i<N;i++) printf("%lf\n",b[i]);
    }
  • コンパイル・リンク・実行
    cc clapack1.c
    link clapack1.obj
    clapack1.exe
     0.000000
     -4.000000
     1.000000
     1.000000
  • Mathematicaで結果を確認
    In[1]:= Solve[{  x    +  2z +  w == 3,
                    3x - y -  z +  w == 4,
                    2x + y + 8z +  w == 5,
                     x - y -  z + 4w == 7},
                  {x, y, z, w}]
    Out[1]:= {{x -> 0, y -> -4, z -> 1, w -> 1}}

Visual Studio 2005 コマンドプロンプト にて

  • 準備
    cd %HOMEPATH%\My Documents\Visual Studio 2005\Project
  • 例1
    cl hello.c
    hello.exe
  • 例2
    cl sample1.c
    sample1.exe
  • 例3
    cl clapack1.c
    clapack1.exe

もろもろのメモ

  • scanfで警告が出るのでscanf_sに変更したら警告が消えた. (別解) #define _CRT_SECURE_NO_DEPRECATE を入れたらscanfのままでも警告は出ない. -- ym 2008-09-16 (火) 16:18:32
  • 行番号表示はツール->オプション->テキストエディタ->C/C++->全般 -- ym 2008-09-16 (火) 16:50:37
  • デバッグなしで実行しないと画面がすぐ消える. -- ym 2008-09-16 (火) 17:32:34
  • Windows Server 2003 SP1 がインストールされていると Visual Studio 2005 SP1 のインストールが失敗する. パッチ(KB925336)を当てて解決. -- ym 2008-09-18 (木) 12:38:55

Counter: 3391, today: 1, yesterday: 0

添付ファイル: filesample1.jpg 574件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSSPDF
Last-modified: 2008-09-19 (金) 06:41:06 (3957d)