ページ 1 / 1
無題
Posted: 2007年12月13日(木) 22:58
by 御三家
Microsoft Visual Studio .NET 2003 というソフトでVisual C++ を使って、数値の入ったファイルを読み込んでプログラムを実行したいのですが、如何せん初心者なんで「どうやったら実行できるのか?」が解りません。というのも、Visual C++には、.NET MFL Win32 など様々なものがあって何がなんやらさっぱりです。いろいろ試してみて、プログラムを「ビルド」して「デバッグ」したりしましたが、「シンボルが・・・」やら別のウィンドウが開いても何も書かれていないとかで惨めな気持ちになってしまいます。こんな質問はこのサイトで聞くようなことではないかもしれませんが、何か一つでも手がかりがあればと思い投稿しました。ご協力お願いします。
Re:無題
Posted: 2007年12月14日(金) 10:17
by 組木紙織
目的にもよりますが、
何も書かれていないウインドウが出る。
で実行は出来ているはずです。
文字が書かれているウインドウが表示される場合などもありますが、
全ては目的次第です。
Re:無題
Posted: 2007年12月14日(金) 15:53
by 御三家
実行してみると「出力」にこんなことが書かれました。
'dft.exe': 'C:\Documents and Settings\TAG3\My Documents\Visual Studio Projects\dft\Debug\dft.exe' を読み込みました。シンボルが読み込まれました。
'dft.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\system32\mscoree.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\system32\advapi32.dll' を読み込みました。シンボルが読み込まれていません。
・・・
'dft.exe': 'C:\WINDOWS\system32\EntAPI.dll' をアンロード
'dft.exe': 'C:\WINDOWS\system32\netapi32.dll' をアンロード
'dft.exe': 'C:\WINDOWS\system32\psapi.dll' をアンロード
'dft.exe': 'C:\WINDOWS\system32\shlwapi.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorwks.dll' を読み込みました。シンボルが読み込まれていません。
・・・
'dft.exe': 'C:\WINDOWS\assembly\NativeImages1_v1.1.4322\mscorlib\1.0.5000.0__b77a5c561934e089_64f24755\mscorlib.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\diasymreader.dll' を読み込みました。シンボルが読み込まれていません。
'dft.exe': 'C:\WINDOWS\system32\ole32.dll' を読み込みました。シンボルが読み込まれていません。
'DefaultDomain': 'c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll' が読み込まれました。シンボルは読み込まれませんでした。
・・・
スレッド 'Win32 スレッド' (0xfc0) はコード -1 (0xffffffff) で終了しました。
プログラム '[4008] dft.exe' はコード 0 (0x0) で終了しました。
プログラム '[4008] dft.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。
どうも「シンボル」というのが重要な気がします。
これを実行した際に一瞬実行用のウィンドウ(黒い背景の)が開き、一瞬で消えたことも気がかりです。
Re:無題
Posted: 2007年12月14日(金) 16:04
by 管理人
コンソールプログラムでいいのでしょうか?
黒い画面に数値が出るだけのプログラムでよければ、コンソール出力用のプロジェクトでいいと思います。
.NETでは微妙に操作が違うかもしれませんが、VS2005の方法でお伝えします。
スタート>新規作成>プロジェクト
Win32>Win32コンソールアプリケーション>(プロジェクト名に好きな名前を入力)
[Win32アプリケーションウィザードの画面で]
アプリケーションの設定>「空のプロジェクト」にチェックを入れる>完了
[ソリューションエクスプローラーの]
「ソースファイル」右クリック>追加>新しい項目
[新しい項目の追加の画面で]
C++ファイル(.cpp)を選択>(ファイル名に好きな名前を入力)
これで準備OKです。後はプログラムを書いてCtrl + F5を押せば普通に実行できます。
どうでしょうか?
Re:無題
Posted: 2007年12月14日(金) 16:24
by 御三家
「ビルド」まで行えて実行しました。
すると
Press any key to continue
というものが黒いウィンドウで表れて
押した瞬間に消えてしまいました。。。ちなみに下の部分に「読み込み専用です」といったことが書かれていました。
自分の作ったプログラムは
別のファイルで数値だけたくさん表示されているものを
プログラムで読み込み
別のファイルで表示するというものなのですが、やはりもっと複雑にしなければいけないのでしょうか・・・?
ちなみにプログラムとしては
if(argc!=3){
printf("Usage is ...\n");
printf("trans.exe <input file> <output file>\n");
return(-1);
}
/* ファイル読込み */
if((fp = fopen(argv[1],"r"))
== NULL){
return(-1);
}
if((fp2=fopen(argv[2],"w")) == NULL){
return(-1);
}
としています。
直接組み込もうとすればargv[/url]の部分をファイル名に換えればうまくいくと考えています。
Re:無題
Posted: 2007年12月18日(火) 08:24
by 組木紙織
もしかして
main()に引数がついていませんか?
この場合は作ったプログラムに引数を渡してあげることが出来ます。
VC++ 2005ではプロジェクト->プロパティ->構成プロパティ->デバッグ->コマンド引数
を変更することで引数を渡すことが出来ます。
以下のプログラムは引数がないときは1、引数の数に応じて2以上が表示されるサンプルプログラムです。
#include<stdio.h>
int main(int argc,char* argv[/url])
{
printf("%d\n",argc);
}