VC++で発生するランタイムエラー

[戻る]
aaa 2011/09/08(木) 14:08:20
はじめまして。

VC++を用いて画像を提示しようとしていたのですが、ランタイムエラーが発生してしまい
ました。


ちなみにランタイムエラーは実行中に起こります。
エラーは以下のようにでます。


追加情報: ランタイムの重大なエラーが発生しました。エラーのアドレスは
0x656f6ac7、スレッド 0xaa0 です。エラー コードは 0xc0000005 です。これは CLR の
バグであるか、またはユーザー コードのアンセーフまたは確認不可能な部分にバグがあ
る可能性があります。このバグの一般的な原因には、スタックが壊れる可能性のある
COM-interop または PInvoke のユーザー マーシャリング エラーが含まれています。

'System.ExecutionEngineException' のハンドルされていない例外が
System.Drawing.dll で発生しました。

プログラム '[2624] kisai.exe: マネージ (v4.0.30319)' はコード -2146233082
(0x80131506) で終了しました。


VC++に関してはまったくの初心者です。
皆様のお知恵を貸していただければと思います。
なにとぞよろしくお願いします。

aaa 2011/09/08(木) 14:12:28
すみません。
自分の使っているのは Microsoft Visual C++ 2010 Express です。
よろしくお願いします。

ITO 2011/09/08(木) 16:12:00
ん?
 System.Drawing.dllてことは .NET Frameworkかな?
 僕は.NET Frameworkは分からないけど何を使っているのか書いたほうがいいですね。
 VC2008 ExpressからプラットフォームSDKも使えましたよね。

aaa 2011/09/08(木) 16:51:48
ご返答ありがとうございます。

申しわけありませんが、本当に初心者でしてそれ自体がどこに記載されているのかわから
ないです。
お手数をおかけいたしますが、どこに記載されているのか教えていただけませんか?


VC++2008を用いた際はまたPC自体のエラーが発生いたしまして(現在どんなエラーをは
いたのか忘れました)、VC2010へ変更いたしました。
今現在それを使えるかは、把握していない状態です。
すみません。

瀬戸っぷ [E-Mail] 2011/09/08(木) 16:55:31
>申しわけありませんが、本当に初心者でしてそれ自体がどこに記載されているのかわから
ないです。

どのようにプロジェクト(ソリューション)を作成しましたか?
ソースコードの拡張子とかもヒントになるかも知れません。
# .NET Frameworkは同じく判らないので具体的なところは不明…

aaa 2011/09/08(木) 18:13:36
たいへんわかりやすいです!ありがとうございます。

ソースコードの拡張子は .cpp です。


ソースの部分ですが、Visual C++ の Windows フォーム アプリケーション で作成いた
しました。
そこからフォームを用いて、プログラムを作成いたしました。

という、回答で大丈夫でしょうか?
足りない点はありますか?

aaa 2011/09/09(金) 13:15:57
'kisai.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_32
\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました
'kisai.exe' (マネージ (v4.0.30319)): 'C:\Users\Owner\Documents\Visual Studio 
2010\Projects\kisai - コピー - コピー\Debug\kisai.exe が読み込まれました。シン
ボルが読み込まれました。
'kisai.exe' (マネージ 
(v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms
\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll' が読み込まれました
'kisai.exe' (マネージ 
(v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_
4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll' が読み込まれました
'kisai.exe' (マネージ 
(v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0_
_b77a5c561934e089\System.dll' が読み込まれました
プログラム '[4360] kisai.exe: マネージ (v4.0.30319)' はコード -2146233082 
(0x80131506) で終了しました。

・・・わからなかったので、これをのせます!
デバックした際の表示されたものです。
これをのせても意味があるかわかりませんが、よろしくお願いします。

みい 2011/09/09(金) 15:25:31
>> VC++を用いて画像を提示しようとしていたのですが
どういう処理を書いてるか分からない(>_<;)
画像はPictureBox貼り付けてImageで画像指定して表示ですか?
どこのHPを参考にして書いたとかいうのがあれば、
回答付きやすいと思います。

aaa 2011/09/09(金) 16:20:36
みいさん、発言ありがとうございます。

先ほどまでvc++と言いましたが、
コンソールアプリケーションではなく、
フォームアプリケーションで書いています。


エラーの場所からすると、なにやらgcnewというnew演算子が関係しているらしいので
す・・・

gcnewの使用箇所なのですが、
Application::Run(gcnew Form1());
でフォームを実行するところと、
みぃさんの指摘でありました、
MyImage=gcnew Bitmap(fileToDisplay);    
pictureBox1->Image=MyImage;
でbitmap形式にした画像を格納する箇所の2点です。


ちなみに、2つ目のgcnewはループで計360回、回す予定です^^;;
いまは、30〜40回ほど回すとエラー吐きます。

みい 2011/09/09(金) 16:45:05
> MyImage=gcnew Bitmap(fileToDisplay);    
> pictureBox1->Image=MyImage;
> でbitmap形式にした画像を格納する箇所の2点です。
> 
> 
> ちなみに、2つ目のgcnewはループで計360回、回す予定です^^;;
> いまは、30〜40回ほど回すとエラー吐きます。
こーゆー使い方するなら1回目のループ以外はgcnewの前にdelete入れといた
方が安全と思います。
gcnewは勝手に解放してくれるけど、いつ解放してくれるか分かんないからねー。

aaa 2011/09/09(金) 17:20:23
早いご返答ありがとうございます。

さっそくおこなってみます!!

PATIO 2011/09/21(水) 17:39:30
ちょっと気になったので書いておきます。

ご本人が何を目的にやっておられるかで話がちょっと変わりそうな気がします。

まず、C++を使ったウインドウを表示するプログラムを作成したいのであれば、
フォームアプリケーションでは目的に合っていません。
フォームアプリケーションはC++/CLIと言うC++とは別の言語を使った物になります。
.NET Frameworkを使ったプログラミングになるので一般に言うVC++でMFCを使った
ウインドウプログラミングとは別物になります。
.NET Frameworkを使ったプログラミングを勉強したいのであれば良いのですが、
そうでない場合は方向が違う事になります。

Microsoft Visual C++ 2010 ExpressではMFCを使ったC++によるウインドウを
表示するプログラムは作成できません。MFCを使わずにWin32APIを使った物なら
作成できますが、MFCを使ったC++でと言う話なら有料の開発環境が必要になります。

ウインドウを表示するプログラムが作りたくて.NET Frameworkを使ったものでOKなら
Microsoft Visual C# 2010 Expressの方がとっつきやすいのではと言う気もします。
C++/CLIはあまり資料が豊富とはいえないのである程度C++とか.NET Frameworkの知識を
もっていないと難しい気もしますし、C++/CLIを覚えてもC++を覚えた事にはならないので
目的をはっきりさせた上でないとお勧めしかねます。

Expressはただで手に入るので助かるのですけれど、
色々と制約が有りますのでそれを理解した上で使わないと目的から外れる事になります。

wood 2011/11/03(木) 18:35:33
レスのやり取り拝見させていただきました。
質問者の方は、ランタイムを意識していますでしょうか?

ただプログラミングを習得したくて簡単・安易に入手可能だった
「Microsoft Visual C++ 2010 Express 」だけじゃないでしょうか
一度本屋さんに行って立ち読み程度で良いのでいろいろなプログラミング言語の
入門書をみて自分の使いやすそうな入門書の通り、環境設定からプログラミング
の勉強をなさったらどうでしょうか?

それぞれ言語特有の用語をある程度、意識できるようになってから質問
したほうが、回答者も意図をくんだ回答をしてくれるようになると思います。

wood 2011/11/03(木) 18:38:28
ちょっと訂正
>「Microsoft Visual C++ 2010 Express 」だけじゃないでしょうか(誤)
「Microsoft Visual C++ 2010 Express 」入手しただけじゃないでしょうか(正)
          

wood 2011/11/03(木) 18:50:12
本題

自動的に生成されたソースプログラムファイルで「Form1.h」と言うファイル
ありますか
もしあってソースの先頭の方に
−−−−−−  略 −−−−−−
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
−−−−−−  略 −−−−−−
こんな感じの記述ありますか、あればまぎれもなく「.NET Framework」の物です。
これだとVC++と「.NET Framework」が混在し入門者には習得が難しいと思います。
C#あたりの入門書の方をお勧めします。

PATIO 2011/11/04(金) 16:33:05
初心者と書かれているのですが、

C++言語とかC++/CLI言語とかその物も触った事が無いとか、
そもそもプログラミングなんてやったこと無いというような話なら
いきなりウインドウを表示するようなプログラムは厳しいのではないかと思います。

ウインドウを表示するプログラムを作成するには、
プログラミング言語の知識(C++言語やC++/CLI言語の文法に関する知識)と
ウインドウを表示したり、ユーザーの操作を受けて処理したりするための知識が
それぞれ必要です。

理想的な順番から言うとまずはウインドウを表示しないコンソールアプリで
文法の勉強を行い、どういうコードを書くとどう動くのかをちゃんと理解する事が
必要だと思います。そういった勉強を行った後にウインドウを表示する為の知識を
勉強しつつ、フォームアプリケーションにステップアップする方が良いと思います。

既にVisual C#の話も出ていますが、
これを使う場合でもC#の文法の知識とウインドウを制御する知識が
必要な事には変わりありません。
C++言語等でプログラミングの知識がある状態であれば、
いきなりウインドウを表示するアプリも大丈夫かもしれませんが、
そもそもその知識が無いのであれば、文法からコツコツ勉強される事をお勧めします。
コンソールアプリだってバカにした物ではないですよ。
きちんと作れば、役に立つツールも作成できます。
ウインドウの制御に関する知識は不要になるのでその分だけ文法の勉強に集中できて良い
と思っています。

ITO 2011/11/04(金) 20:17:17
初心者で
  C/C++言語をあまり知らないでウインドウプログラムを作りたい。
というならば、C#はありかも知れませんね。
むかしのVBですと違いますが、今のVBはC#と酷使していますから、
C#で.NET Frameworkを用いてウインドウプログラムを作るのはありかと思いますね。

ただ、いきなりまっさらから作って動かないはまずいですね。
.NET Frameworkのサンプルならネット上で検索できるので、
まずサンプルをコンパイルして動かすことが大切ですね。

aaaさんがインストールした「Microsoft Visual C++ 2010 Express」が
まだ正しくコンパイルする保障はないんですよね。
正常にインストールできればまず問題ないと思いますが.......

ITO 2011/11/04(金) 20:29:45
プログラムを作ろう! Microsoft Visual Basic 2010 入門

http://www.microsoft.com/japan/msdn/vstudio/2010/product/express/book.aspx
これなんかいいと思います。
内容は薄いけど、初心者向け、確か言語はC#です。

ITO 2011/11/07(月) 10:44:35
訂正します。
>むかしのVBですと違いますが、今のVBはC#と酷使していますから、
以前のVBですと違いますが、今のVBはC#とよくにていますから、

古いスレッドには追加発言できません。