2012-02-15 14 views
1

C++で実行可能ファイルの入力パラメータを入力する必要があるかどうかを、人はどのように認識できますか?.exeファイルに入力パラメータが必要かどうかを確認する方法

どのパラメータが必要なのかを知るにはどのようなコマンドをコード内で見つけるべきですか?

たとえば、次のように実行する必要がある場合:hello.exe test.txt。しかし、あなたはそれを知らない。

hello実行可能ファイルを実行しますが、その横にテキストファイルが必要です。 誰かがこの種のパラメータが必要であることをコードでどのように認識できますか?

EDIT:私のソースコードは、この int型のmain(int型のargc、char型*のARGV [])のような主要持っていますが、引数が正確に何をすることができますか?

argcとargvが表示される唯一の場所はこの行です。 argcパラメータの数であり、argv実際を含む文字列の配列である

int main(int argc, char** argv) 

#ifdef PARALLEL    
     Test.CVodeInit_parallel(states,startTime,argc,argv); 
    #else 
     Test.CVodeInit_serial(states,startTime); 
    #endif 
+0

問題のプログラムを逆アセンブルしていますか? アプリケーションに渡される引数は、char配列の形式でmain(...)関数に渡されます。 – crush

答えて

0

パラメータは次のようになりmain関数のパラメータとしてプログラムに渡され議論

これらのパラメータが処理されるかどうかをコードで確認してください。

注:

合法ですが、プログラムが期待していないことを意味
int main() 

、またはハンドル、パラメーター:main機能も、このようになります。

+0

私の編集を見てください。 –

0

「コード内に」と書いてありますが、「.exe」について質問しています。 ソース-codeにアクセスできるのか、生のバイナリから派生させたいのかは不明です。

前者の場合は、main()/ WinMain()関数(または同等のエントリポイント)を調べる必要があります。後者の場合は逆アセンブルおよびヒューリスティック。

+0

私はこのコードにアクセスできます。 –

+0

これは素晴らしいことですので、main()/ WinMain()などのメイン関数を見つけてから、どのパラメータを取るかを見てください。典型的にはargc/argvです。次に、それらの変数にアクセスする場所を見てみましょう。 –

0

実行可能な実行可能ファイルを取得し、それにどのような引数が必要なのかを簡単に調べる方法はありません。引数を取るEXEのほとんどは、-hまたは--helpまたは/hまたはそれに似た何らかの引数を表示します。しかし、それ以外では、

ソースコードから、引数を再構築することができます。多くのプログラムでは、GNUツールを使ってargvの引数を解析するので、そのことを理解するためにはそれに精通している必要があります。 Boost.ProgramOptionsは、一部の人々が使用する代替手段です。他の人は手動で引数を解析するだけなので、コードを歩かせて、argvから抜け出すものを見なければなりません。


のargcとargvが表示される唯一の場所は、この行です。

次に、どの引数が必要なのかを知るには、Test.CVodeInit_parallelの実装を調べる必要があります。例えば

1

- 誰かがこのようなあなたのコードを実行する場合:

ファイルhello.exe test.txtの

、その後のargcは[ARGV、ARGV [0] = "ファイルhello.exe"、2になります1] = "test.txtの"

が、彼らはこのようなコード実行した場合:

ファイルhello.exeを

then argcは1、argv [0] = "hello.exe"

あなたが質問している質問はありますか?基本的にargcは整数で、argv配列にいくつの文字列があるかを示します