• 締切済み

64ビット コマンドライン Cプログラミング

私の環境は以下のとおりです CPU x6800 メモリ 8GB Vista 64 sp1 Visual studio 2005 やりたいことは、コマンドプロンプト[ > ] で 大きな配列 char dem[1000][1000][2000] を使うCプログラムを作成し使用すること。 質問したいことは、 コマンドラインの環境設定(PATH: bin lib include) コンパイラ リンカ の/オプション はどのように設定したらよいのでしょうか。 現状は work.c のコンパイル+リンク で work.exe はエラーなく成功するのですが 実行すると、{ work.exeは有効な win32 アプリケーションではありません。} というエラーが出て実行できません。 配列の要素を2000->1000にすればもちろんエラーは出ません。 なおこのときのコマンドプロンプトは  Visual Studio 2005 x64 Win64 コマンド プロンプト PATH は次のようになっています。 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;  C:\Windows\Microsoft.NET\Framework64\v2.0.50727;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;  C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;  C:\Windows\system32;C:\Windows;  C:\Windows\System32\Wbem;  C:\Windows\System32\WindowsPowerShell\v1.0\ 先達のご教示をお願いいたします。

みんなの回答

noname#208124
noname#208124
回答No.1

出来ません 64ビットネイティブバイナリのPE32+であってもメモリに展開後のサイズは2GBを超えられません(ファイルサイズではなく仮想メモリにメモリマッピングされた後のサイズです) http://msdn.microsoft.com/ja-jp/library/3hs5w5e3.aspx グローバル変数はEXE/DLLファイルの.dataセクションに突っ込まれますから他のと合わせて2GBを超えることになります 大きな配列は動的に確保してください

nogamijiji
質問者

補足

dumm さま 教示いただいたとりにやってみます。 質問で書き落としましたが、 配列はグローバルにとっています(下記)。 char dem[1000][1000][2000]; int main() {;} この場合は実行しようとしたとき、エラーが出ます。 いっぽう、main の中でこの配列をとると、値を代入した時に エラーとなります。 main の中で動的に確保しても代入の段階でエラーになると あたまから決めてかかっていました。 ありがとうございました。

関連するQ&A

  • コマンドプロンプトを起動したら動くバッチファイルの作り方

    コンパイルするために、コマンドプロンプトを起動するたびに C:\Program Files\Microsoft Visual Studio\VC98\Bin>vcvars32.bat と打つ必要があります。 バッチファイルを作って何も意識する必要がないようにしたいのですが 何かいい方法があったら教えてください

  • javaを学習しようとしたけど・・・

    win7です。64bitです。 http://www.javadrive.jp/install/jdk/index4.html の通りの手順でインストールしたのですが javac -versionをコマンドプロンプトに打ったら 「操作可能なプログラムまたはバッチ ファイルとして認識されていません」 になってしまいます。 ダウンロードしてインストールしたファイルは jdk-7u17-windows-x64.exeです。 「bin」は C:\Program Files\Java\jdk1.7.0_17 の中にありました。 プログラムと機能を見ても、 Java 7 Update 17(64-bit) は入っています。 環境変数は C:\Program Files\Common Files\Microsoft Shared\Windows Live; C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live; %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\Windows Live\Shared; C:\Program Files (x86)\QuickTime\QTSystem\; c:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\; c:\Program Files\Microsoft SQL Server\110\Tools\Binn\; c:\Program Files\Microsoft SQL Server\110\DTS\Binn\; c:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\; c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\; c:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\; C:\Program Files\Java\jdk1.7.0_17\bin; になっています。 一番下に、セミコロンで区切ってパスを追加しました。 それなのに、コマンドプロンプトを打ってもエラーになります。 何がダメなのでしょうか?

    • ベストアンサー
    • Java
  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • コマンドプロンプトで、ipconfig  エラー

    自分のIPを調べるコマンド”ipconfig”をコマンドプロンプトから実行したら 『’ipconfig’は内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。』 エラーが発生. ネットで検索し調べると、pathの設定を確認せよ。とのほとんどの助言かと思いまして、 pathに、       %windir%\system32 を加えましたが、効果ありません。ご助言をお願いしたいです。 【実行詳細】 (1)環境変数 Path (Javaを使用しているため、初期状態に加筆しております。) %JAVA\HOME%\bin; %SystemRoot%¥system32; %SystemRoot%;%SystemRoot%¥System32¥Wbem; %SYSTEMROOT%¥System32¥WindowsPowerShell¥v1.0¥ ; C:\Program Files (x86)\MySQL\MySQL Utilities 1.3.4\; %windir%\system32 (2)コマンドプロンプトで、 C:\Users>echo %path% を実行 %JAVA\HOME%\bin; C:\windows¥system32; C:\windows;C:\windows¥System32¥Wbem; C:\windows¥System32¥WindowsPowerShell¥v1.0¥ ; C:\Program Files (x86)\MySQL\MySQL Utilities 1.3.4\; C:\Program Files (x86)\Java\jdk1.6.0_19\bin (1)と(2)が一致していないのも不思議でありますが、pathはちゃんと上書き保存されております。 宜しくお願い致します。

  • C2146を回避するにはどうしたら良いのでしょうか

    いつもここにお世話になってますm(__)m。今回は下記の様なエラーが出てしまい、困っております(--;)。 <エラー内容> 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません エラーが起こっているのはwinnt.h内の「typedef void * POINTER_64 PVOID64;」という部分なのですが(他にもありますが)、winnt.hは弄ってないのです。 ネットで検索したところインクルードファイルディレクトリの指定の順番が怪しそうなので、「ツール」「オプション」でPlatformSDK関連が一番上に来るように変更(実行可能ファイル、インクルードファイル、ライブラリファイル)してリビルドしてみましたが結果は変わりませんでした。 他にチェックすべき点をお教え頂けると助かります。 [環境] ・WindowsXP(SP2) ・Visual Studio 2005 Professional(C++、SPなし)

  • PATHから特定の文字列を抜く方法

    いつもお世話になっております。 バッチファイルを作成しているのですが、その中で、 特定の文字列を抜いて、変数の中に入れたいです。 コマンドプロンプトのコマンドでできるでしょうか? echo %PATH% を実行するとこんな感じで、中身が出力されます。 ------------------------------------------------------------- C:\windows\esql\bin;C:\oracle\product\10.2.0\client_1\bin;c:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files\Common Files\Roxio Shared\OEM\12.0\DLLShared\;C:\Program Files\Roxio\OEM\AudioCore\;C:\Program Files\Web_Plugin;C:\ListWORKS\Program;C:\Program Files\HITACHI\JP1AJS2V\bin;C:\windows\hitachi;C:\Program Files\Common Files\Hitachi;C:\Program Files\HITACHI\JP1AJS2DA\bin ------------------------------------------------------------- この中から、「C:\oracle\product\10.2.0\client_1\」を抜きたいです。 お知恵をお貸しください。 なお、OracleClientは1バージョンしかインストールしていない前提なので、1つしか出てきません。 「Oracle」を検索して、抜き出す方法はありますでしょうか? よろしくお願いします。

  • VC++2010のmsvcp100.dllについて

    私は、windows7 64bitで「Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1」や「Microsoft Windows SDK for Windows 7 and .NET Framework 4」 をインストールしました。 しかし、Message: Visual Studio C++ 2010のProgram Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dllが見当たりません。redistフォルダ自体が存在しません。 どうすれば、Program Files (x86)\Microsoft Visual Studio 10.0\VC\いかにredistフォルダとmsvcp100.dllを作成することができますか?

  • Dドライブにmsdia80.dll

    Dドライブにmsdia80.dllが存在し 調べた結果一番大きなドライブに保存されるらしいとのことで どうしたものかと調べた結果 Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージをインストールすると解決する と書かれていたのですが相変わらずDドライブにmsdia80.dllが存在し C:\Program Files\Common Files\Microsoft Shared\VCにはありませんでした ほかのやり方を調べたところ msdia80.dllを以上の場所にいれコマンドプロントから regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VC\msdia80.dll"と打ちまして DllRegisterServer は成功しましたと出たのですがこれで大丈夫なのでしょうか? またこれは再起動の際にいちいちコマンドプロントから打ち込まないといけないのでしょうか? 以下ファイル構造的なもの 《32bit》 C:\Program Files (x83)\Common Files\Microsoft Shared\VC  amd64(ファイル 中にはmsdia80.dll) msdia80.dll msdia90.dll msdia100.dll 《64bit》 C:\Program Files\Common Files\Microsoft Shared\VC\msdia80.dll msdia90.dll msdia100.dll と今回入れたmsdia80.dllがございます どなたかご存知の方がいらっしゃいましたら ご回答のほどよろしくお願いします

  • OpenCVを使いたいのですが

    Visual C++ 2010にOpenCV2.4.3の導入し、設定を終えたのでプログラムをビルドさせるとエラーが吐き出され動作しません。 どなたか原因がわかる方はいらっしゃらないでしょうか? 【プログラム】 #include<stdio.h> #include<openCV2/opencv.hpp> #ifdef _DEBUG #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #else #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #endif //-------------------------------------------------------- //main int main(int argc,char* argv[]) { const char* szWndName="画像"; if(argc<2) { fprintf(stderr,"入力ファイル名を指定してください。\n"); return -1; } IplImage *img=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); if(img==NULL) return -1; cvNamedWindow(szWndName); cvShowImage(szWndName, img); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img); return 0; } 【ビルド後にでるエラーメッセージ】 ------ すべてのリビルド開始: プロジェクト: OpenCV, 構成: Debug Win32 ------ TEST02.c C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'abs' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'atexit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atof' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atoi' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atol' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'bsearch' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'calloc' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'div' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'exit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'free' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'getenv' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(25): error C2061: 構文エラー : 識別子 'labs' この後はエラー表記が続きます。

  • Cプログラミングの質問です。

    方程式2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x=0の解xを二分法により求め、それを”atai=××”と表示させるプログラムを書こうと思っているのですが、エラーがでてしまい、さらにどこを直していいかわかりません。 詳しい方がおられましたら、アドバイスをいただけたらと思います。よろしくお願いいたします。 <エラー内容> 「コンパイルしています... tom.cpp .\tom.cpp(34) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照) C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(575): 'long double pow(long double,int)' の可能性があります。 C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(527): または 'float pow(float,int)' C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(489): または 'double pow(double,int)' 引数リスト '(int, int)' を一致させようとしているとき .\tom.cpp(34) : error C2059: 構文エラー : 'サフィックスが無効です。' .\tom.cpp(34) : error C2146: 構文エラー : ';' が、識別子 'x' の前に必要です。 ビルドログは "file://c:\Documents and Settings\satoutakaaki\デスクトップ\file\tom\tom\Debug\BuildLog.htm" に保存されました。 tom - エラー 3、警告 0」 <プログラム> #include "stdafx.h" #include <stdio.h> #include <math.h> double fx(double x); int main (void){ double x1=-1000; double x2=1000; double xn; double y; int i=0; for(i=1;i<100;i++) { xn=0.5*(x1+x2); y=fx(xn); if(y>0) {x1=x1/2+x2/2;} if(y<0) {x2=x1/2+x2/2;} i=i+1; } printf("atai=%f",xn); return 0; } double fx(double x) { double z; z=2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x; return z; }