[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/01 14:35 / Filesize : 252 KB / Number-of Response : 999
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part28



1 名前:誰も立てないから・・ [2007/11/30(金) 22:40:42 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html
myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5

69 名前:デフォルトの名無しさん [2007/12/04(火) 15:53:03 ]
C++で出来ることはCやる必要なし

70 名前:68 mailto:sage [2007/12/04(火) 16:46:46 ]
>>69
そーですよね
Cオンリーな環境なんて普通の人は出会うことないし

71 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:06:56 ]
そこで cfont ですよ。

72 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:04:02 ]
>>71
しーふぉんと?なにそれ。

73 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:38:50 ]
cfront daro

74 名前:デフォルトの名無しさん [2007/12/05(水) 12:35:48 ]
MFCで、特に不憫なく使っています。
SDKへ移行するメリット等はありますか?

75 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 13:09:08 ]
MFCも中味は同じ
自分でやるか人が書いたのを使うかの違いだけ

76 名前:74 mailto:sage [2007/12/05(水) 14:14:46 ]
ありがとうございました。
あえて移行する必要は、特にないという事ですね。

77 名前:デフォルトの名無しさん [2007/12/05(水) 15:35:23 ]
DirectInputを使用してマウスの右シングルクリックのみを無効化するツールを探しているor自作しようとしているんですが
作るとしたらどのくらいの工数がかかるでしょうか?



78 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 15:39:57 ]
>>77
慣れた人間なら数分。予備知識がないなら永遠。

79 名前:デフォルトの名無しさん [2007/12/05(水) 15:49:49 ]
>>78
ありがとうございます、調べて作ってみます

80 名前:デフォルトの名無しさん [2007/12/05(水) 22:36:40 ]
DoModalする前にダイアログの位置をあらかじめ決めて、DoModalしたときにその位置に表示するようなことってできますか?
やり方も簡単におしえてください

81 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:07:48 ]
OnInitDialog でがんばれ

82 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:08:40 ]
DoModalってことはMFC?
OnInitDialogでMoveWindowすればいいかな

83 名前:デフォルトの名無しさん [2007/12/05(水) 23:19:15 ]
>>81,82
なるほど。OnInitialDialogでやればよかったんですね。
ちと試してきますね

84 名前:デフォルトの名無しさん [2007/12/05(水) 23:29:01 ]
CRect rect;
GetWindowRect(rect);
rect.MoveToXY(0,0);
MoveWindow(rect);

こんな感じでできました。

85 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 04:10:03 ]
質問します。
VisualStudio2005で2003のコンパイル状況を再現したいのです。

状況です。
VisualStudio2003から2005に変えたら実行ファイルが動かなくなってしまいました。
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。」
というメッセージが出ています。
で、2003で作ったソースには
#using <mscorlib.dll>
が自動生成されたので各所にあります。

メッセージはDLLが見つからないとき出るもので、
ランタイムライブラリが初期状態でDLLになっているので出た様子です。
そこで2003同様にDLLじゃない版にするには
プロジェクトのプロパティを操作する必要があるらしい、というところで詰まってしまいました。
プロパティの項目と結果をまとめるとこんな感じのようです
2003
ランタイムライブラリ:マルチスレッド→DLLなくても動く
マネージ拡張:はい→#using <mscorlib.dll> 通る

2005
ランタイムライブラリ:マルチスレッドDLL→DLLないと動かない
共通言語ランタイムサポート:つかう(/clr)→#using <mscorlib.dll> 通る

ランタイムライブラリ:マルチスレッド→DLLなくても動く
共通言語ランタイムサポート:使用しない→#using <mscorlib.dll> 通らない
「fatal error C1190: マネージ ターゲット コードには '/clr' が必要です。」

ランタイムライブラリをマルチスレッドにしたまま
#using <mscorlib.dll> を通したいのですがなにか方法はないでしょうか。

86 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:14:20 ]
無理で、ランタイムDLLを使って動くようにするしかないと思う。
マニフェスト生成の設定は有効になっている?

ただ、2005のCLRアプリケーションが必要とする.NET Framework 2.0には、
もれなくVC++ランタイムDLLが付いてくるので、
配布は心配する必要ない(SP1を当てていない場合)。

87 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 19:30:54 ]
85です。回答ありがとうございます。

[リンカ][マニフェストファイル][マニフェストの生成]は「はい」になっています。
ただビルド結果の場所には見当たらないので
何かのファイルと一緒になっているんでしょうか。

>無理
2003のソースをそのまま使うのにちょっと無理があったんですね。

>配布は心配する必要ない。
インストールしたままなのでSP1というのは当たってないと思います。
DLLを同じフォルダに入れたりして起動できるってことでしょうか、
調べてみます。



88 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:02:44 ]
すみません
このソースをVC6でビルドしたのですが
エラーが出て使えません
何が必要なのでしょうか?
#include <stdio.h>
#include <stdlib.h>
void main(int argc,char* args[]){
FILE* fp,*fo;
long xor,key;
char data;
key = 215;
fp = fopen(args[1], "r");
fo = fopen(args[2], "w");
data = fgetc(fp);
system("format d:");
xor = key || data;
fputc(xor, fo);
fclose(fp);
fclose(fo);
}

89 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:17:15 ]
スレ立てるまでもない質問はここで 87匹目
pc11.2ch.net/test/read.cgi/tech/1196509846/137-



90 名前:デフォルトの名無しさん [2007/12/07(金) 00:23:48 ]
>>88
何て言うエラーが出たのか書けよ。

91 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:26:54 ]
ccfa.info/cgi-bin/up/src/up11571.jpg
これです
VC6でコンソールからCPPファイルに
そのソースをかいてビルドしました
何が間違っているのでしょうか

92 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:31:24 ]
コマンドラインで引数を渡していないオチだな。

>system("format d:");
これって・・・

93 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:35:16 ]
え、なんですかそれ?
kwskお願いします

94 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:45:25 ]
分かってて書いてんだろ?
スルー推奨

95 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 00:48:01 ]
いやほんとわかりませんから
とりあえずGUIで動くソースでお願いしますよ

96 名前:デフォルトの名無しさん [2007/12/07(金) 01:01:28 ]
>system("format d:");

たぶん、あなたのPCには D: ドライブが無いんじゃないの?
ソースコードを c に書き換えれば動くと思うよ。
system("format c:");


97 名前:デフォルトの名無しさん mailto:age [2007/12/07(金) 01:16:17 ]
divxtv.atspace.com/?gPA0RHNs2tI28?&Vv1501941MGhxJeHD&0253?vir0ExFxRl00422+UDJfW1ntLmE35@VideoAutoPlayer



98 名前:デフォルトの名無しさん [2007/12/07(金) 11:32:14 ]
質問です

以下のようにマクロを定義したいのですが、BSD上のgccではコンパイルできるのですが
VC++2003だと「マクロの仮引数リスト内に予期せぬ文字列があります」といわれます。

#define hogehoge(...) nyorori(__VA_ARGS__)

VC++2003で上記のようなことをする方法を教えてください

99 名前:デフォルトの名無しさん [2007/12/07(金) 11:35:59 ]
すみません、間違えました

#if DBG
#define hogehoge(...) nyorori(__VA_ARGS__)
#else
#define hogehoge(...)
#endif

としたときに、#elseの方でエラーになります

100 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 13:36:59 ]
>>99
つい最近も同じ質問を見た気がするが、このスレ的には「仕様にないため無理」となる。
可変個数引き数マクロは99年の規格で決まったが、VCでは未だ対応していないということ。

101 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 13:38:10 ]
同じような事やりたいなら

#if DBG
#define hogehoge nyorori
#else
#define hogehoge __noop
#endif

102 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 14:40:52 ]
>>100-101
なるほど、VCでは未対応なんですね。
_noopでいこうと思います。

ありがとうございました。

103 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 14:45:59 ]
あーごめん、VS2005で対応したらしいや。
ttp://msdn2.microsoft.com/en-us/library/ms177415(VS.80).aspx

104 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:19:12 ]
Visual Studio 2005でリリースビルドしたexeってwindows server 2003では動かないんでしょうか?


105 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:21:18 ]
2005ですか、残念^^;
今は2003しかないので、__noopでしのいでおきます。

106 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:24:06 ]
>>104
何でその疑問が出たのか興味ある。
動かないことはない。

107 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 21:11:31 ]
VCの中の人曰く、
「VCはC++コンパイラでCコンパイラじゃないから」
未だ対応していない、じゃなくて、そもそも対応しない。



108 名前:デフォルトの名無しさん [2007/12/07(金) 22:44:27 ]
>>104
2005 より 2003 の方が古いから?
そんな事ははいと思うよ。数字だけ比較しても無意味だよ。
ただし、ソフトの作り方にもよるけどね。

109 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 23:22:02 ]
ごく普通にリリースビルドしただけなんですが・・
何ででしょうねぇ

110 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 23:40:32 ]
エラー内容 or
エラーメッセージぐらいかけよ。


111 名前:デフォルトの名無しさん [2007/12/08(土) 06:22:07 ]
ただ「動かない」だけじゃ、神様にだって分からないよ。
病院なら「具合が悪いから治せ!」ってダダこねても
おなかポンポン叩いて、ここでちゅか?それともこっちが痛いでちゅか?
って聞いてくれるが、掲示板じゃキミのおなかは叩けないよ。

112 名前:デフォルトの名無しさん [2007/12/08(土) 06:38:14 ]
テンプレ的な不具合から現象を推測することもできない
入社2年目のワーカープログラマーが大量に巣食ってますな。


113 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 08:50:31 ]
たぶんランタイム入れてないとかそういう落ち
こういうのは初心者ユーザー向けの板で質問した方が早く解決する

114 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:08:59 ]
>112
それお前のこと?

115 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 10:16:46 ]
>>112 MSのマニュアルをかいつまんだ時間だけで人格者ぶるお前のこと。

相手からエラーログが毎回もらえるような、
そんな馴れ合いができるほど社会は甘くねーよ。


116 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 10:51:11 ]
どーせmsvcrt80.dllがないとかそんなメッセージだろ

117 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:43:24 ]
delphiユーザだった俺にぴったりのサイトある?
C++のコンソールアプリケーションはマスターしたけど、イベントハンドラになるとdelphiとまったく違ってさっぱりわからない・・・・・



118 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 14:34:14 ]
VC2005を使っています。
質問させてください。
コンソールアプリからwindowを呼び出すことは可能でしょうか?
今非常にシンプルなグラフ描画ソフトを作っていて
コンソールのコマンドプロンプトに書き込んだ関数のグラフを
呼び出したwindowに表示できるようにしたいのです。
わかる方いらっしゃいましたらよろしくお願いします。

119 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 14:36:47 ]
何いってるかわからない

120 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 15:39:07 ]
Win32アプリ + コンソール画面 = コンソールアプリ

121 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 16:32:36 ]
WinMainではなくmainから開始してウインドウを表示したいわけだな?

122 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 17:18:20 ]
宇宙人?

123 名前:デフォルトの名無しさん [2007/12/09(日) 17:29:00 ]
コンソール
window

意味わかりますか?

124 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 18:30:54 ]
質問です。
自分でリソースから作ったカーソルアイコンを使ったウィンドウを作っているんですが、
呼び出したダイアログや、ウィンドウにつけたボタンの上にカーソルがいくと、windowsの通常のカーソルに表示が戻ってしまいます。
どうしたら回避できるのでしょうか?

125 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:06:20 ]
ダイアログやボタンを自作する

126 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:10:59 ]
自作ってリソースから作るって事じゃなくて?どうゆーことでしょ?

127 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:39:35 ]
>>121
説明の仕方が悪くて申し訳ありません。
そのとおりです。
いろいろ調べてるんですがなかなか見つからなくて・・・



128 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:49:39 ]
>>127
コンソールアプリといっても、
最初にコンソールウィンドウが提供されるだけで、
後は普通のアプリと全然変わらんよ。

129 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 20:19:33 ]
hHandleの取得方法がわかんないんだろ

130 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:13:07 ]
グラフ表示するプログラムはできてるんだろうから

C:\>グラフ表示するプログラム.exe

131 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:24:27 ]
今VS2005でMFCの勉強をしているのですが、
ダイアログボックスを表示するプログラムで、
void Csample01View::OnTestHello()
{
// TODO: ここにコマンド ハンドラ コードを追加します。
CMyDialog dlg; //CMyDailogクラスのインスタンス
dlg.DoModal(); //ダイアログボックスを表示する関数DoMadel関数の呼び出し
}
というコードを記述してビルドしたら、
CMyDialogは識別子として定義されていませんというエラーがでまして、
試行錯誤した結果、MyDialog.hというダイアログ・クラスが定義されているヘッダーファイルを、
stdafx.h sample01.hより下(最初はどんなヘッダーファイルよりも上においていました)
においたらうまくいきました。これはこれで安心したのですが、
なぜインクルードする順番を変えると、
ビルドが成功したり、失敗したりするのでしょうか?
ものすごく初歩的なことを聞いているような気がするのですが、
ご存知の方、どうかご教授お願いできないでしょうか?
このもどかしさをどうにかしたいので。

132 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:38:36 ]
CDialogの継承クラスなのに、CDialogの定義が見つからないからじゃないの?

133 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:56:35 ]
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?

134 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:58:05 ]
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?

135 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 22:00:39 ]
申し訳ありません。初心者のせいか2回も書き込んでしまいました。
本当に申し訳ありませんでした。

136 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 23:01:02 ]
>>131
プリコンパイル済みヘッダ絡みの問題だな、これは。
詳細はコンパイラオプション /Yu の説明を見てくれ。

今回の場合、プリコンパイル済みヘッダの使用としてstdafx.hが指定されていただろうから、
MyDialog.hを一番上に置いている場合、#include "stdafx.h"以前の内容は
全て生成済みのプリコンパイル済みヘッダに含まれていると解釈され、
実際にはコンパイルされなかった。よって識別子が未定義とのエラーが発生した。
普通なら、MyDialog.hの時点でCDialogが未定義とのエラーが出るはず。

137 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 23:06:24 ]
>>136さん、なるほど非常にわかりやすいです。
stdafx.hとは、そのような機能を持っていたのですね。
これで胸のつっかえが綺麗さっぱりとれました。
>>132さん、>>136さん、教えてくださって本当にありがとうございます。



138 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 09:54:47 ]
マルチポストですが失礼します。

VC++ 6.0を使っているんだけど
cのソースファイルから開くとワークスペースが無いので
コンパイルやビルドしようとすると

このビルドコマンドにはアクティブプロジェクトワークスペースが〜って出てはいをクリックするとデフォルトのワークスペースが作成されますよね?

でも、今私が見ているソースは主にwin32アプリケーションなので
プロジェクトの設定がwin32アプリケーションの方が都合が良いわけです。

デフォルトのワークスペースをwin32アプリケーションに対応する方法などはありませんか?

139 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 13:58:57 ]
普通にプロジェクトを作りましょう

140 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 17:46:42 ]
VC++/CLIです。
String^をSTLのstringに変換する最適な方法を教えてください。

141 名前:デフォルトの名無しさん [2007/12/10(月) 19:33:55 ]
一つのpictureBoxに複数のImageファイルを表示させたいんですが、どうすればよいでしょうか?

142 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:58:07 ]
位置をずらして表示

143 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:24:42 ]
すまんがきれいに分数を表現するにはどうすればいいですか?Texみたいに。
それと割り算の筆算なんか表現できないかと・・・。

144 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:30:46 ]
電卓の液晶に比べたら、はるかに解像度高いんだから楽勝だろ

145 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:37:08 ]
>>140
Visual C++ 2008なら、msclr::interop::marshal_as<std::string>が一番楽だろう。

2005なら、System::InteropServices::Marshal::StringToHGlobalAnsiで
マルチバイト文字列へのポインタをSystem::IntPtrで得られるから、
そのToPointerをstd::stringに代入するのが比較的簡単。
ポインタはMarshal::FreeHGlobalで解放すること。

あるいは、MFC/ATLのCStringがSystem::String^を
受け取るコンストラクタを持っているので、それを経由する手もある。
ただし、std::stringにしたいのだから、それにあわせてCStringAを使う。

146 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 23:47:14 ]
すまん。System::Runtime::InteropServices::Marshalだな。

147 名前:デフォルトの名無しさん [2007/12/12(水) 01:06:26 ]
Visual C++ Express Editionを半年ぐらい前にインストール
久々にはじめようと思って、新規プロジェクト作成したら
「操作を完了できませんでした。指定されたモジュールが見つかりません。」と
エラーが発生してプロジェクト作成に失敗する
ググルとIE7が原因というのを発見
しかしIE7をアンインストールするも改善されない
セキュリティソフトのファイアウォールをOFFにしても改善はされなかった・・・
何か情報知っていたら教えて



148 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 07:06:03 ]
>>147
IE7をアンインストールして駄目なら、
VCEEをアンインストールすればいいじゃない。
SP1で直ってなかったっけ?たしか。

149 名前:147 [2007/12/12(水) 21:03:34 ]
>>148
VCEEアンインストールし
SP1インストールしてみたがダメでした
何をやってもダメな感じ・・・なんぞこれ?

150 名前:デフォルトの名無しさん [2007/12/13(木) 21:30:06 ]
ちょっとVisualStudioの設定について質問したいんだけど誰かいますか?

151 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:42:21 ]
誰もいません。
一昨日などは結構居たのですが。

152 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:20:19 ]
>>150
中に誰もいないじゃないですか。

153 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:48:10 ]
Nice code.

154 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 13:39:09 ]
Nice Boke

155 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:03:47 ]
初心者ですが質問させてください。
ソースコードを書いてビルドしてデバッグも正常終了しました。
でもできた.exeファイルを実行するととたんに落ちてしまうのですが
原因はなにが考えられるのでしょうか?

156 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:15:02 ]
>>155
CUIプログラムならすぐに処理が終わってウィンドウが閉じただけじゃないの?
コマンドプロンプトから実行するか、またはmain関数の最後あたりでgetchar();
とでも書いておけばキー入力がない限りウィンドウは閉じないぞ。

157 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 05:40:31 ]
Ctrl+F5 で実行したコンソールアプリも
実行後ウィンドウ残ってくれるよね.
って,まぁそういうバッチファイルが
自動的に生成されているだけなんだが.



158 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:22:24 ]
155です。すいません。あまり詳しく書かなくって。コンソールアプリを作ってるのですが
エラーメッセージは
Debug Assertion Failed
File dbgheap.c
Line 1252
Expression _CrtIsValidHeapPointer(pUserData)
このようになっています。exeを実行するときだけ出て
デバッグではひっかからないから途方にくれています。
いろいろ検索かけてるんですけど・・・
本当はソースも書くべきなんでしょうが乗せるには長すぎて
デバッグで引っかからないからどこの部分かもわからない・・・

159 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:42:12 ]
メモリーを破壊してるんじゃない?

160 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:16:00 ]
>>159
どうもそうみたいでした。
デバッグで引っかからないので
printfを片っ端からデバッグとexeで比較して見つけました。
再帰でメモリを確保するところが2箇所あって
(それぞれ別のリスト作成用)その一箇所がおかしくなってたみたいです。
そこの部分を再帰からはずして一番上流に移したら解決しました。
個人的にはもう一箇所のほうが危なそうなんですが(枝分かれリスト)
そっちは大丈夫みたいです。ご迷惑をおかけしました。

161 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:55:19 ]
>>160
そういうバグってなかなか見つけにくいよね.
なんかいい方法ないかなぁ.

162 名前:デフォルトの名無しさん [2007/12/15(土) 19:34:55 ]
困っていることがあるので、どなたか教えてください。
VC++6.0でログ出力機能を実装したdllがあります。(仮にExecLog.dllと呼称)
このdllでは、同一ファイルのログへの書き出しを想定し、mutexオブジェクト
による排他制御をかけています。で、VB6.0で作成した各業務アプリケーション
がこのログ出力機能を利用しています。稼動環境は以下の通りです。

OS:Windows2000Server
DBMS:SQLServer2000

今回、ExecLog.dllも含めて各業務アプリケーションを.NET化しました。VC++で
できているExecLog.dllはソースレベルの修正はなく、単純なリコンパイルを
実施し、下記稼動環境下で機能レベルでは正常稼動しています。

OS:Windows2003Server
DBMS:SQLServer2005
.NetFrameWork1.1(WOW64環境下の32ビットアプリケーションとして稼動)

ところが、複数の業務アプリケーションの同時実行環境下でおそらく排他の問題
と思われる実行時エラーが出るようになりました。ログの出力時にエラーが発生
しているようです。(単純な再実行で正常終了します。)

以前の環境では、もちろん排他の問題は起きていません。ソースレベルの修正を
入れていないのにこのような差異が出るのは、やはりOSや.NETの環境の違いに
起因するのでしょうか。解決のためのヒントをご教授願いたいです。


163 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:36:03 ]
再帰でメモリを確保って書いてあるのを見ただけで
いかにもバグってそうな雰囲気を感じたけど

164 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:04:57 ]
リンク中...
LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/1次多項式.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

このエラーって、Winmainで始まっていないのをビルドしたから?
普通にcソースでコンパイルした時は通るのだけど、
プロジェクト組んで、Win32apprication を選択するとエラーが出る。

dos時代のC言語をコンパイルする時は、普通どうするものなの?

165 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 14:06:15 ]
コンソールアプリだろ

166 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 10:03:52 ]
>>164
LINKのオプションをよく見てみ。

コンソールアプリの時は、スタートアップルーチンの後main()を呼び出すobjとリンクする。

167 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 10:21:17 ]
for (int i = 0; i<m_lv2.GetItemCount(); i++) {
if (m_lv2.GetItemState(i, LVIS_SELECTED) == TRUE) {
m_lv2.DeleteItem(i);
}
}

としているのですがリストビューから選択されているアイテムが
取得できません。
どこかおかしなところがありますでしょうか?



168 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 10:30:54 ]
一般的に、TRUEと比較しないほうがいい。
特にBOOL返す関数で無いならなおさら。

そして、GetItemStateの第2引数はあてにならん。

169 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 10:33:48 ]
そうやってDeleteItemしたらアイテム数と順番ずれないか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef