Microsoft Visual Studio 2010 Expressをインストールしたのですが、 Visual Studio コマンドプロンプトを立ち上げた際に以下のようなエラーメッセージが表示されます。 ERROR: Cannot determine the location of the VS Common Tools folder. このエラーのせいか、clコマンドも使えないようです。 インストールし直してみましたが、改善しませんでした。 改善方法をご存知の方はご教授願います。
↧
Visual Studio 2010
↧
マクロを書き換えたい。
こんにちは。 プログラムの保守の請け負いをしています。 #define_SET( __z, __a, __b, __c ) \ { \ Foo foo ;\ \ lpFoo.SetParamA( __a ) ; \ lpFoo.SetParamB( __b ) ; \ lpFoo.SetParamC( __c ) ; \ \ __z <<<<=== foo ; \ } 上記のようなマクロ(説明の便宜上いろいろ省いています)がありまして、 Hogehoge ; _SET( hoge, 1, 2, 3 ) ; のような使い方をしています。 「<<<<===」ですが、これはHogeクラスが持っている演算子です。Fooクラスをセットするというものです。 なんか見づらいので下記のように書き換えて欲しいと言われたのですが、どう書き換えていいものかわかりません。 hoge <<<<=== _SET( hoge, 1, 2, 3 ) ; マクロの知識がイマイチでして、書き換え可能なのかがわかりません。 個人的にはFooクラスのコンストラクタを拡張して、 #define_SET( __z, __a, __b, __c ) Foo( data0, data1, __a, __b, __c ) くらいにしか思いつかなかったのですが、Fooクラスはいじりたくないそうです。 ご存じの方がいらっしゃいましたら教えていただけないでしょうか。
↧
↧
C#のメモリマップドファイルについて
アプリケーションAで得た情報をアプリケーションBに渡す方法としてメモリマップドファイルの使用を検討しています。 例えばアプリケーションAで、これのテキストボックスに数値をキー入力した場合、キーイベント内でメモリマップドファイルを生成してその数値を書き込みます。 アプリケーションBではこれのボタンを押されるとそのイベント内でメモリマップドファイルの有無を確認し、存在していればアプリケーションAで入力された数値を表示すると言った感じです。 しかし、実際にやってみますとアプリケーションAで生成したファイルはキーイベントから抜けた時点で消滅してしまう様で、アプリケーションB側から見ると常にファイルが存在しない状態になっています。 アプリケーションAのフォームを閉じない限りファイルを残したままにしたいのですが、どの様にすれば良いのかお教え頂けないでしょうか。 宜しくお願いします。
↧
WIN32APIで動画を読み込もうとしましたが…
Microsoft visual studio2005のC言語(ウインドウアプリケーション)で動画呼び出しのプログラムを作成して、ビルドもできたのですが開始すると動画が表示せず、 真っ白なウインドウが表示しただけになってしまいます。 呼び出される動画は、Debugフォルダに入れています。 mciSendString( _T("open homerun2.avi type avivideo alias test"), NULL, 0, NULL ); このように命令しているのですが… 動画はWMPで作動するAVIファイルです。
↧
関数から配列を返すには?
return で配列を返すにはどうしたらよいのでしょうか。 例えば以下のような場合です。 int main (){ char Value[] = "999"; int a; a = test(Value); printf ("%d", a); } int test(char *Value) { int nVal[255]; ここで nVal に適当な処理をして・・・ return Value; } int a を配列とかにしてみましたけど、コンパイラが 通りません。 要は配列数値を main で受け取って表示したいのですが、 本日C言語はじめたところなので、教えていただければありががたいです。
↧
↧
win32アプリケーションコンパイル時のエラー
#include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance , LPSTR lpCmdLine, int cmdShow) { MessageBox(NULL,"この文字が出ます","メッセージ",MB_OK); return 0; } 上記ソースをコンパイル時に以下のエラーが出ます ------ ビルド開始: プロジェクト: kcn01, 構成: Debug Win32 ------ リンクしています... MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 C:\C++練習\kcn01\Debug\kcn01.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ビルドログは "file://c:\C++\kcn01\Debug\BuildLog.htm" に保存されました。 kcn01 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== 2005とSDKを一緒に使用するにある手順1~5は全て行いました ウィンドウズアプリケーションは普通に動作するのですが 空のプロジェクトにして↑のソースをコンパイルするとエラーが出ます 何か原因がわかる方よろしくお願いします。
↧
C言語 配列の長さの上限
C言語で配列Array[N]の長さNの上限っていくらなんでしょうか? もし可能なのであれば上限を2147483647にしたいのですが、方法を教えてください。
↧
zlib.libとlibpng.libについて
zlib.libとlibpng.libの作成ができなくて困っております。 libpng.libでpngAPIを使うには、zlib.libが必要だということで zlib.libのビルドにも挑戦していますがうまくいきません。 これらのファイルを作るのが目的ではないので どなたか配布できるならば配布していただけないでしょうか?。 もし配布できないなら作り方の詳細をご教授願います。 環境 Windows VISTA SP1 Visual Studio 2008 googleで検索して出てきたHPについては ほとんど見ましたが それをみてやっても上記環境ではうまくビルドができません。 *例えば以下 他にもたくさんみてその通りにやりましたが エラーが大量にでてしまいうまくいきません。 http://dencha.ojaru.jp/programs_07/pg_graphic_10a1.html 大変 レベルの低い質問ですがよろしくおねがいいたします。 m(___)m
↧
for文の質問です。
x1からx2.x3.x4...x25までをループさせる場合はどうしたらいいのでしょう? 1から25ならわかるのですが変数付きだとわかりません。 よろしくお願いします。
↧
↧
main関数の中をスッキリさせたくて
main関数をスッキリさせたくて、関数化してみたのですが、objファイルまではできるのですが実行ファイルができません。 エラー内容ですが、下のようにでます。 /* test_2.c(9) : error C2440: '関数' : 'FILE' から 'FILE *' に変換できません。 test_2.c(9) : warning C4024: 'read_f' : の型が 1 の仮引数および実引数と異なります。 test_2.c(10) : error C2440: '関数' : 'FILE' から 'FILE *' に変換できません。 test_2.c(10) : warning C4024: 'output_f' : の型が 1 の仮引数および実引数と異なります。 */ 書き方が間違ってるとは思うのですが、どこをどう直せばいいかわかりません。 教えてください。 #include <stdio.h> #include <stdlib.h> void read_f(FILE *f_p); void output_f(FILE *f_p); int main(void){ FILE *fp; read_f(*fp); output_f(*fp); fclose(fp); return 0; } void read_f(FILE *f_p){ int fn=0; char f_name[256]; printf(" text number 1, 2, 3, 4 : "); scanf("%d",&fn); sprintf(f_name,"map%d.txt",fn); if((f_p=fopen(f_name,"r"))==NULL){ /*f_nameを " " で囲まない!*/ printf("You will not be able to open the file\n"); exit(1); } } void output_f(FILE *f_p){ int i,j; int array[10][10]; for(j=0;j<10;j++){ for(i=0;i<10;i++){ fscanf(f_p,"%d",&array[i][j]);//画面表示 10*10 } printf("%d",array[i][j]); } printf("\n"); }
↧
C++でJavaScriptを実行する方法
お世話になります C++でJavaScriptを実行する方法はあるのでしょうか? やりたい事は、C++BuilderでFlashを操作して、FlashからJavaScriptを操作します(できるようなので。。。) あとは、JavaScript⇔C++が行えれば・・・と思ってます よろしくお願い致します
↧
台形の面積を求めるプログラム
すみません。わたしはC言語の初心者なのですが、台形の面積を求めるプログラムを教えてください。
↧
画面を強制的に再描画させる方法
MFCでプログラミングをしています。 SDIプログラムで、 メニューを選択すると「ある操作」をするように 作っています。 「ある操作」の中でループを回しており、 各ループ終了毎に更新結果を逐次描画させたいのですが、 うまく行きません。 ループの最後に Invalidate(TRUE) を書いてだめだったので、 pView->SetRedraw(TRUE); pView->RedrawWindow(); pDoc->UpdateAllViews(NULL); なども併用してみたのですが、 通過するだけで何もされません。 どなたかご教示よろしくお願いします。
↧
↧
多次元配列の受渡しでの警告
多次元配列を関数に受け渡す際に、 警告: passing argument 1 of ‘mat_add’ from incompatible pointer type 警告: passing argument 2 of ‘mat_add’ from incompatible pointer type のような警告が出てきてしまいます。 プログラムは、明解C言語(柴田望洋著)で紹介されているサンプルプログラムなのですが(下に載せておきます)、どうしてこのような警告がでるのか分からず困っています。 多次元配列の渡し方になにか問題があるのでしょうか? #include <stdio.h> void mat_add(const int ma[][3], const int mb[][3], int mc[][3]) { int i,j; for(i=0; i<2; i++) for(j=0; j<3; j++) mc[i][j] = ma[i][j] + mb[i][j]; } int main(void) { int i,j; int ma[2][3] = {{9,2,-3},{4,5,1}}; int mb[2][3] = {{9,2,-3},{4,5,1}}; int mc[2][3] = {0}; mat_add(ma, mb, mc); for(i=0; i<2; i++){ for(j=0; j<3; j++) printf("%3d",mc[i][j]); putchar('\n'); } return(0); }
↧
C言語で作成するチャットについて
LinuxでC言語のチャットプログラムを作成しています。プログラムを作ってみましたがうまく動きません。悪い個所が分からないのでお力を貸して頂きたいです課題の提出が迫っているので、よろしくお願いいたします。 <server> #include省略 #define PORT 5320 char *show_ip(char *ip_address); int main(void){ int soc, acc, size, child[3],width,i,count,pos,ret; char buffer[80]; struct sockaddr_in client, server; struct sockaddr_storage from; struct hostent *server_host; socklen_t len; fd_set mask; char host_name[257]; int temp; memset(host_name, 0, sizeof(host_name)); gethostname(host_name, 256); server_host = gethostbyname(host_name); printf("\n-------- informations of server ----------\n"); printf("Host name:%s\n", host_name); printf("IP = %s\n", show_ip(server_host->h_addr)); printf("\n\n"); soc = socket(AF_INET, SOCK_STREAM, 0); memset((char *)&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(PORT); bind(soc, (struct sockaddr *)&server, sizeof(server)); size = sizeof(client); listen(soc, 5); for (i = 0; i < 3; i++){ child[i] = -1; } for (;;) { FD_ZERO(&mask); FD_SET(soc, &mask); for (i = 0; i < 3; i++) { if (child[i] != -1){ FD_SET(child[i], &mask); if(child[i]+1 > width){ width = child[i]+1; } } } switch(select(soc+1, (fd_set *) &mask, NULL, NULL, NULL)) { case -1: perror("select"); break; case 0: break; default: if (FD_ISSET(soc, &mask)){ len = (socklen_t) sizeof(from); if((acc = accept(child[i], (struct sockaddr *)&from, &len)) == -1){ if(errno != EINTR){ perror("accept"); } }else{ if(child[0]&&child[1]&&child[2]!=-1){ fprintf(stderr,"child is full : cannot accept\n"); close(acc); }else{ if(child[0] == -1){ child[0] = acc; }else if(child[1] == -1){ child[1] = acc; }else{ child[2] = acc; } } } } for(i=0;i<3;i++){ if(child[i]!=-1){ if(FD_ISSET(child[i],&mask)){ memset(buffer, '\0', sizeof(buffer)); recv(child[i], buffer, 80, 0); printf("%s> ", show_ip((char *)&client.sin_addr)); printf("%s", buffer); if(strncmp(buffer, "exit", 4) == 0) break; for(i=0;i<3;i++) { send(child[i],show_ip((char *)&client.sin_addr),80,0); send(child[i],buffer,80,0); close(child[i]); } (void) close(child[i]); child[i] = -1; } } break; } } } } char *show_ip(char *ip_address){ static char ip[7]; char ipnum[4]; bcopy(ip_address, ipnum, 4); sprintf(ip, "%u.%u.%u.%u",(unsigned char)ipnum[0], (unsigned char)ipnum[1], (unsigned char)ipnum[2],(unsigned char)ipnum[3]); return ip; } <client> #include省略 #define STDIN_FD 0 #define PORT 5320 int select_func(int sockfd); void err_func(char *msg){ perror(msg); exit(EXIT_FAILURE); } int main(int argc, char **argv){ int sockfd, len; char buf[BUFSIZ]; struct sockaddr_in serv; unsigned short port; if(argc != 3){ printf("usage: progname serv_ip serv_port\n"); exit(EXIT_FAILURE); } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_func("socket"); serv.sin_family = PF_INET; port = (unsigned short)atoi(argv[2]); serv.sin_port = htons(port); inet_aton(argv[1], &(serv.sin_addr)); if(connect(sockfd, (struct sockaddr *)&serv, sizeof(struct sockaddr_in)) < 0) err_func("connect"); do{ if(select_func(sockfd) == 0){ len = recv(sockfd, buf, BUFSIZ, 0); buf[len] = '\0'; printf("-> %s\n", buf); }else{ len = read(STDIN_FD, buf, BUFSIZ); len = send(sockfd, buf, len, 0); } }while(strncmp(buf, "EXIT\r\n", 6) != 0 && strncmp(buf, "EXIT\n", 5) != 0); close(sockfd); return 0; } int select_func(int sockfd){ fd_set rfds; FD_ZERO(&rfds); FD_SET(sockfd, &rfds); FD_SET(STDIN_FD, &rfds); if(select(sockfd+1, &rfds, NULL, NULL, NULL) < 0) err_func("select"); if(FD_ISSET(STDIN_FD, &rfds)) return STDIN_FD; return sockfd; }
↧
Visual C++ 2008で<stdio.h>のインクルード文が使えない!?
#include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。
↧
マウスポインタの画像を変更したい
Visual C++ 2010 express でプログラム開発している初心者です。 通常のマウスポインタである矢印を、ボタン等のクリックイベントで 自分の好きな画像に変更したいと思います。 curファイルにしなくてはいけないことは、わかりましたがそのファイルをどのように プログラム上で、すればいいのでしょうか? ネット検索しましたが、見つかりませんのでよろしくお願いします。
↧
↧
迷路を解くプログラムについて
迷路を脱出する経路を探索するプログラムを作成したいのですが、 何をすればいいのかまったくわかりません 以下のプログラムはあるんですが、このプログラムを改良していくということなんでしょうか?左上からスタートして右下がゴールらしいのですがやり方教えてください #include <stdlib.h> #include <stdio.h> #include "List.h" #define LEN 256 int maze[LEN][LEN]; void readMaze(char* filename, int *w, int *h, int maze[LEN][LEN]) { FILE *fp; int x, y; if (0 != fopen_s(&fp, filename, "r")) { fprintf(stderr, "指定された迷路の入力ファイルを開くことができませんでした.\n"); exit(-1); } fscanf_s(fp, "%d,%d\n", w, h); for (y = 0; y < 2 * *h + 1; y++) { for (x = 0; x < 2 * *w + 1; x++) { fscanf_s(fp, "%d%*[^-0-9]", &(maze[y][x])); } } fclose(fp); } void writeMaze(char* filename, int w, int h, int maze[LEN][LEN]) { FILE *fp; int x, y; if (0 != fopen_s(&fp, filename, "w")) { fprintf(stderr, "指定された迷路の出力ファイルを開くことができませんでした.\n"); exit(-1); } fprintf_s(fp, "%d,%d\n", w, h); for (y = 0; y < 2 * h + 1; y++) { for (x = 0; x < 2 * w + 1; x++) { fprintf_s(fp, "%d", maze[y][x]); if (x < 2 * w) { fprintf_s(fp, ","); } else { fprintf_s(fp, "\n"); } } } fclose(fp); } // シンプルなバージョン:なるべく右下へ行けるなら右下へ int main(int argc, char** argv) { int w, h; int x, y; if (argc < 3) { fprintf(stderr, "迷路の入出力ファイル名を指定してください.\n"); exit(-1); } // 迷路読込 readMaze(argv[1], &w, &h, maze); // maze[1][1] から maze[2*h-1][2*w-1] までのルートを探す x = 1;//座標の初期化 y = 1; while (x != 2 * w - 1 || y != 2 * h - 1){ if (maze[y][x + 1] == 0) {// 右にまだ行ってない? maze[y][x] = 1000; x = x + 1; } else if (maze[y + 1][x] == 0) {// 下にまだ行ってない? maze[y][x] = 1000; y = y + 1; } else if (maze[y][x - 1] == 0) {// 左にまだ行ってない? maze[y][x] = 1000; x = x - 1; } else if (maze[y - 1][x] == 0) {// 上にまだ行ってない? maze[y][x] = 1000; y = y - 1; } else if (maze[y][x + 1] == 1000) { // 行き止まりなので右に引き返す maze[y][x] = 1; x = x + 1; } else if (maze[y + 1][x] == 1000) { // 行き止まりなので下に引き返す maze[y][x] = 1; y = y + 1; } else if (maze[y][x - 1] == 1000) { // 行き止まりなので左に引き返す maze[y][x] = 1; x = x - 1; } else if (maze[y - 1][x] == 1000) { // 行き止まりなので上に引き返す maze[y][x] = 1; y = y - 1; } } maze[2 * h - 1][2 * w - 1] = 1000; // ゴール // 答えを濃い色に // 上記のプログラムはすでに答えを濃い色(1000)にしている // 迷路書出 writeMaze(argv[2], w, h, maze); return 0; }
↧
C++ビルドエラー
VC++6.0コードを変更をしないでVS 2008 C++(Professional Edtion)でビルドするとコンパイルはパスしますが、2件のワーニングがでます。 Win VistaでVS 2008 SP1のコンディションです。 アドバイスをくれませんか? 1. warning C4996: 'CWinApp::Enable3dControlsStatic': CWinApp::Enable3dControlsStatic is no longer needed. You should remove this call. #ifdef _AFXDLL Enable3dControls(); #else Enable3dControlsStatic(); #endif c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(4821) : 'CWinApp::Enable3dControlsStatic'の宣言を確認して ください。 >クラスに新しい定義が必要ですか? 2. warning C4244: '=' : 'ULONGLONG' から 'LONG' への変換です。データが失われる可能性があります。 LONG lSize = 0L; //ヘッダ部を読み込みます。 TRY { lSize = m_pCFile->Seek( 0L, CFile::end ); m_pCFile->SeekToBegin(); . . >修正がわかりません。 以上
↧
「std」てナニモノですか?(VC++.net初心者です)
今週からわかりもしないのに、VC++を組む事になりました。 大まかな概念を理解しながら、コーディングに入っていこうと思ってます。 (C/C++/VC++を同時進行で覚えるという、とても好ましくない方法で進めています) プロジェクトの構成 各種ファイルの役割 まではイロイロ調べてなんとか理解できました 標準ライブラリ ヘッダファイル からのクラス(または関数)のインクリードを調べているところで、煮詰まりました 「std」てナニモノですか? コーディングの練習でiostreamを使って簡単なクラスを使ったところ、「cout」や「endl」を使う時に頭語に「std::」を付けないとコンパイルでエラーになりました 標準ライブラリの関数を使う時に利用する 「namespace」みたいなモノですか? 正しく理解したいのでイロイロと調べてみましたが、答えがみつからずココに来ました 助言または良いサイトがあったら教えて下さい。 m(__)m
↧