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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:25:17 ]
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

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

21 名前:デフォルトの名無しさん [2007/04/15(日) 00:08:40 ]
WindowsXPでVisual C++ 2005 Express Editionを使っています。
「Windowsゲームプログラミング」という本のプログラムを実行してみたところ、
アクセス違反と表示されてしまいました。
デバッガでステップ実行してみるとWM_DESTROYのreturn 0;からDispatchMessageを出るまでの間に
表示されるのですが、どこが悪いのか分かりません。
どうしたらアクセス違反を無くせるでしょうか。
以下、出力抜粋とコードです。

test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
プログラム '[3220] test_window2.exe: ネイティブ' はコード 0 (0x0) で終了しました。

#include <windows.h>
#define APP_NAME TEXT("Sample_MainWindow")
#define DRAW_STRING TEXT("Kitty on your lap")
LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc;
MSG msg;
HWND hWnd;
HDC hdc;

22 名前:21 [2007/04/15(日) 00:10:29 ]
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1;
wc.lpszMenuName = NULL;
wc.lpszClassName = APP_NAME;
if (!RegisterClass(&wc)) return 0;
hWnd = CreateWindow(APP_NAME, TEXT("Window Title"),WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);
if (hWnd == NULL) return 0;

/* デバイスコンテキストのハンドルを取得 */
hdc = GetDC(hWnd);
/* デバイスに文字列を描画 */
TextOut(hdc, 10, 10, DRAW_STRING, lstrlen(DRAW_STRING));
/* デバイスコンテキストのハンドルを解放 */
ReleaseDC(hWnd, hdc);
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
return msg.wParam;
}
よろしくお願いします。


23 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 00:30:22 ]
>>21
実行してみたが、ウチの環境では問題なし。

24 名前:21 mailto:sage [2007/04/15(日) 02:38:05 ]
わざわざ実行までして頂いてありがとうございます!!
問題なしですか、どうしよう…
そうするとコードではなくてうちの環境が悪い可能性がありそうですね。
………
ということで環境を疑う前提で再度ググりまくってみたところ、おかげさまで解決策が見つかりました!
ImeWatcherというソフトを起動していたのですが、そちらを終了させるとアクセス違反が発生しなくなりました。

その結論に至った流れとしては、こちらのページ ttp://forums.belution.com/ja/vc/000/335/02s.shtml
を参考に出力に知らないソフトが混じっていないか見てみたところ、
なぜか起動中のソフトのdllがいくつか混じっていたため試しに一つ一つ終了させて確認していたら
それを終了させておけばアクセス違反が発生しないということが判明したという次第です。
これが相性とかいうやつなのか、単にImeWatcherのバグなのか分かりませんが、
原因(と一応の対策)がわかってすっきりしました。ありがとうございました。

下記はアクセス違反発生時の出力の抜粋です。
'test_window2.exe': 'C:\src\test_window2\debug\test_window2.exe' を読み込みました。シンボルが読み込まれました。
'test_window2.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'test_window2.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。

ここ→'test_window2.exe': 'C:\Program Files\Takubon\ImeWatcher\ImeWatch.hook' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。

'test_window2.exe': 'C:\WINDOWS\system32\oleaut32.dll' を読み込みました。シンボルが読み込まれていません。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
プログラム '[2644] test_window2.exe: ネイティブ' はコード 0 (0x0) で終了しました。


25 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:31:03 ]
MS VC++ VS2005なんですが
#include <stdio.h>
int main(void)
{
FILE *fp1;
 if( (fp1 = fopen( "d:\\tmp\\aaa.txt", "r" )) == NULL ){
}else{
}
}
だと、警告がでるんですが
でない書き方(fopenを使わない)を教えて下さい


26 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:55:25 ]
どんな警告が出るんだ?

27 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:01:50 ]
>>26
レスどうもです
warning C4996: 'fopen': This function or variable may be unsafe. Consider
using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNING
S. See online help for details.C:\Program Files (x86)\Microsoft Visual
Studio 8\VC\include\stdio.h(234) : 'fopen' の宣言を確認してください。

ググったらfopenは古いから使うなってことらしいです


28 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:09:51 ]
>>27
移植性を考慮するなら、言語規約にあるfopen()を使うのが妥当。
MSの甘言に載せられて移植性を度外視するのなら、fopen()の派生版でもAPIでも使えば宜しい。

29 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:27:18 ]
C/C++言語の初心者が使うには余計な機能



30 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 12:08:54 ]
>Consider using fopen_s instead

31 名前:デフォルトの名無しさん [2007/04/15(日) 12:21:21 ]
>>21
GetMessage(&msg, NULL, 0, 0)
で&msgで参照する時、ImeWatcheあたりがmsg使ってて、
それでプロテクトメモリ競合が発生して、AccessViolation出してるっぽいなあ
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
return msg.wParam;
}

REGETMESSAGE:
if(&msg){
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
}
else{goto REGETMESSAGE;}
return msg.wParam;
}
なんてするとどうなるんだろか?


32 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 12:31:43 ]
MSG msg;
で、このmsgがぶつかる場合というのは
ウィンドウメッセージキュー
なのか
PostThreadMessageキュー
どっちかで、他がつかんでて、ぶつかってるんだろう。

33 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 15:33:16 ]
Web API(Yahoo! API)をVisual C++で使いたいのですが、
Web APIを利用するためのクラスなどはありませんか?

34 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:04:41 ]
>>30
レスサンキューです


35 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:23:54 ]
>>33
スレ違い。

そして無視される>28、>29

36 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:39:48 ]
>>25
C++のstd::ifstreamを使えばOk

>>28
ところがどっこい、あのセキュリティ強化のライブラリ関数はTR 24731として公開されており、
下手すると将来の標準Cに取り込まれる可能性すらある。現時点ではまだどうなるかわからないけどな。
ちなみにOpen Watcomのも実装しているようだ。

37 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 18:07:53 ]
>>36
M$のはSafer Cと相違点が多すぎる。
警告通りに直したら後でひどい目にあうのは確実。

38 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 18:18:01 ]
fopen_s なんか使ってるやついるんか?
winアプリならapi使うだろうし
学習用途なら標準Cライブラリだろうし

39 名前:デフォルトの名無しさん [2007/04/15(日) 19:32:11 ]
XP VS2002 MFC。
大文字と小文字を区別せずに文字列(char)を検索したいのですが、
速くて簡単な方法ありましたら教えて下さい。



40 名前:デフォルトの名無しさん [2007/04/15(日) 19:44:58 ]
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
結局派遣やってるバカがいるんだけどw
なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw
最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w

そもそも信頼されてるなら直接契約するか正社員にするはずだが、
いつでも切れる派遣会社経由って舐められてんだよ

派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい


41 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 20:23:48 ]
>>39
stricmp()

42 名前:39 [2007/04/15(日) 21:36:55 ]
>>41
レスありがとうございます。
先頭からstricmpで比較していって検索するモノが出来ました。

43 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:19:58 ]
SDKで作ったサンプルプログラムですがアプリの動作で
ちょっとおかしなところがありまして質問します。

ファイルから読み込んでビットマップを表示させます。
画像がクライアント領域よりも大きければ、表示と同時にウィンドウ標準の
スクロールバーを各種設定をして表示させます。
スクロールバーはきちんと機能して画像がスクロールされます。

ところがウィンドウのサイズを小さくして水平スクロールバーが
クライアント領域が消えるくらいまで小さくすると水平スクロールバーが
消えたと思ったら下側のフレームに水平スクロールバーが薄く表示されています。
そこからもっとウィンドウのサイズを小さくするとタイトルバーの×ボタンに重なって
スクロールバーのサイズグリップが重なって見えます。
これでは見栄えが悪いと思い解決方法はないかと思い質問しました。
よろしくお願いします。

開発環境はVisual C++ 6.0 Pro
OSはXP Pro SP2

44 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 23:08:24 ]
なんか難解な日本語だなw

下側のフレームに薄く表示されるって状態がいまいちわからんのだけど
言ってる各状態のスクリーンショットとか撮れん?


45 名前:43 mailto:sage [2007/04/17(火) 00:06:02 ]
>>44
説明が下手で済みません。画面のスクリーンショットは自分のホームページに載せて
リンクしました。
以下がリンクです。

水平スクロールバーが下側のフレームに薄く表示されている画像。
ttp://www3.zero.ad.jp/m-takahashi19741025/20070417BMPViewSample01.png

スクロールバーのサイズグリップがタイトルバーの×ボタンに重なっている画像。
ttp://www3.zero.ad.jp/m-takahashi19741025/20070417BMPViewSample02.png

よろしくお願いします。

46 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 05:44:09 ]
最小のサイズを決めておけば?

47 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 07:16:21 ]
>>45
CreateWindowでウィンドウスタイルにWS_HSCROLLとWS_VSCROLLを指定してスクロールバーを出して
その時に一緒に表示されるサイズグリップの挙動ってことでいいんだよな?
VCが作る雛型にスタイル追加してやってみたけど、サイズ小さくしたら普通に消えていったけどなぁ
2000とXPの違いなんだろうか・・・

48 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 07:32:24 ]
3つほど質問があります。

@C++はクラス外に関数を記述できますが、main()やWinMain()以外を
 クラス外に記述する意味はあるのでしょうか?
 単にCからの引き継ぎ、慣習ということであれば
 なるべく全ての処理をクラス内に記述したいのですが。
AVisual C++には、JavaのLoggerクラスの様な標準ログ出力クラスは用意されていないのでしょうか。
 見あたりませんでした。clogをリダイレクトする処理を実装するしかないでしょうか。
BGUIアプリを、コンソール出力無しに作成する場合は、
 WinMain()関数を使用するしかないのでしょうか?(Google検索だとそのように記述するサイトがヒット)
 機種依存するコードはなるべく外出し、極小化したいのですが、
 WinMain()からmain()を呼ぶように記述するしかないでしょうか。

49 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 08:16:53 ]
1. まあみんながみんなOOPというわけではないからね。
Cみたいな手続き型プログラミングだけでなく、
STLアルゴリズムみたいにジェネリックプログラミングでは非メンバ関数も必要に応じて使う。
何にせよ、OOPのときでも静的メンバだけのクラスなんて作るなんて馬鹿げていると俺は思うけどね。

2. Logger(というよりJava自体)を俺は知らないが、clogをリダイレクトするくらいなら、
適当なファイルをofstreamで開けば十分だと思う。ちなみにVC++のclogは、バッファリング付の標準エラー出力。

3. プロジェクトのプロパティ→リンカで
•システム→サブシステムにWINDOWS(コンソールを使わない指定)、
•詳細→エントリポイントにmainCRTStartup(main用のスタートアップルーチン)
を指定すると、mainから始まる非コンソールアプリケーションが作れるはず。
あまり一般的な手法ではないかもしれないが。



50 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 08:59:53 ]
>>48
GUIアプリって時点で十分環境依存だからWinMainを排除したところで意味はないぞ。

51 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 09:07:46 ]
>適当なファイルをofstreamで開けば十分だと思う。ちなみにVC++のclogは、バッファリング付の標準エラー出力。
(cin, )cout, cerrの他に用意されてるの?
#尤も、cerrはバッファリングしないが。

52 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:34:20 ]
質問があります。

開発環境、実行環境ともにWindowsXP(SP2)
仕様環境はVC++6.0です

レジストリの
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
のStartを3から4に書き換えた(USB大容量記憶デバイス禁止)状態で
USBポートに挿入されているリムーバブルディスクの確認(空き容量と場所(E:などの割り当てられる文字))を行う方法が
存在するのなら、ご教示ください。

53 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 20:27:35 ]
>>48
1:C++は不完全OOPです。

2:所詮テキストをフォーマットしてファイルに出力するだけなのでそもそも特別に必要でない

3:Windowsの標準的なGUIアプリにおいてはそもそもコンソールなんて使ってません
  ていうか規定のエントリポイントを排除しないでください

54 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 20:32:30 ]
>>51
そうだよ
無論標準C++に含まれている

55 名前:48 mailto:sage [2007/04/17(火) 20:34:52 ]
>>49
ご丁寧にありがとうございます。
1につていは、Javaの癖なんですよね。C++では非メンバ関数が当たり前ということであれば
郷に従う必要がありそうです。
2については、ログレベル(外部ファイルで、出力する下限レベルを設定)を
実現したいので、やはり個別実装しないと駄目なんでしょうね。
3については、なるべく一般的なコーディングを心がけて移植性を高めたいと思うので、
一般的でないなら止めた方が良さそうですね。

>>50
そのまま他でコンパイルできることまでは望みませんが、
このクラスは機種依存、と明確にして移植性を高めるのが目的です。
確かに、WinMainでそれを考える意味はあまりないのかもしれませんね。
イベントドリブンでなければともかく。

56 名前:48 mailto:sage [2007/04/17(火) 20:39:34 ]
あ、返事中に新たな回答が。

>>53
1、そう意識していくしかないのでしょうね。
もっとも、自分で制約をかければほぼ完全にOOP的に
実装できそうだと思ってはいますが(それが良いかはともかく)
2、>>55で書いてしまったのですが、ログレベルを実現したいのです。
個別実装したいと思います。
3、わかりました。WinMainを使って素直に実装しようと思います。

57 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 21:00:15 ]
Windows用のプログラムを作れる環境では、
どんなコンパイラでもWinMainが使えると思って平気。
その程度の移植性ならある。

58 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:16:19 ]
ていうかWinMainが使えなきゃWindows用のGUIプログラムなんて作れなくね?


59 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:54:30 ]
>>58
>>49
インスタンスハンドルはGetModuleHandle(0)で、
WinMainの最後の引数の代わりはSW_SHOWDEFAULTで代用すればいい。
(どうしても拘るのならGetStartupInfoと言う手もあるが)



60 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 07:37:19 ]
そこまでする意味が理解できない件

61 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 07:58:28 ]
環境依存コードはどうやったって出てくるだろうしね。
自分は環境依存コードにWinMain書いておいて、そこからmainを呼ぶようにしているが、
それは48氏が初めに書いているね。(それでいいと思うけど)

62 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:23:15 ]
freepg.fc2web.com/cpp/topic_vce_001.html
以前のパソコンで上のサイトよりVisual C++ 2005 Express Editionを
インストールできたのですが新しいパソコンでインストールできません(VISTA)

CDイメージ(.iso)インストール(AIR-EDGEだと途中でダウンロードが止まる)
Webからインストール(これで試しています)

Microsoft Platform SDK を一緒に使うで
[PSDK-x86.exe]を実行すると

下のメッセージがでます
「インストールパッケージを開くことができませんでした。
アプリケーションベンダに問い合わせ、このパッケージが有効な
Windowsインストーラパッケージであることを確認してください」

3日間悩んでいます>_<;よい意見などあれば宜しくお願い致します。<(_ _)>

63 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:34:31 ]
Vistaを捨てるのはどうだろう。

64 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 10:52:50 ]
MSに訊いてみるのはどうだろう。

65 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 22:44:35 ]
Visual C++ 6.0で質問です。

サービスプログラムから複数のスレッドを起動し、中でDLL関数を明示的に
呼び出しているのですが、この関数に不具合があるらしく、アクセス違反が
発生するうえ、呼出元のスレッドごと堕ちてしまいます。

DLLを直せば済むんでしょうが、とある事情によりDLL自体に手を入れ難い状況です。
そこで質問なのですが、DLLのエクスポート関数内で発生した保護エラー等を
呼出元でトラップし、処理続行するようなことはできるものでしょうか?

よろしくお願いします。


66 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:01:36 ]
自分がやってることは疑わずに悪いのはこの関数と決めつけてるし
ほっといてあげよう

67 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:20:49 ]
適当に言うけど

catch(...)

で捕らえられんの?

68 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 01:08:41 ]
>>66
仰るとおりです。以後気をつけます。

DLLのソースは入手しまして、fopen()が失敗した際にNULLが返っているにも
関わらずfclose()を実行してそこでコケているので、>>65 のような書き方を
してしまいました。

>>67
レスありがとうございます。
catch(...)で試してみたのですが、拾ってくれない(そこまで到達してない)
ようです。
一度通常のコンソールアプリに組み込んでトラップできるか試してみます。
何かお気付きの点ありましたら、お願いします。


69 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 08:20:39 ]
プログラムの1機能的な例外ではなくOSが発する例外なのにcatchできるわけないべw



70 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 08:25:44 ]
>fopen()が失敗した際に

失敗の原因が
>サービスプログラムから複数のスレッドを起動
だったりしないよな

71 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 17:02:09 ]
>>68
/EHaを付けて、SEH (__tryと__expect)の方を使えば受けられるかもしれない。
SEHで受けられるなら、_set_se_translatorでC++例外へ変換する道が開ける。

72 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 07:55:05 ]
>68
そのDLLの内部でfopen()お呼びfclose()が行われてるってことかな。
ソースあるなら呼ばないで自分で似たようなの作り直すってのはダメなのか?
あるいは、そのDLLの問題部分を完全に突き止めて、ここをこう直せと指摘するとか。

73 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 08:28:27 ]
お前らの話しを全部理解できてないので間違えてるかもしれんが
俺も例外をcatch(...)で取れないことが最近あった。
で、調べた。

記憶が確かなら
VC6のころはメモリアクセス違反をcatch(...)で取れた。

VC2005はコンパイルオプションを変えないと
その手のCPUがだす例外をcatch(...)で取れない。
あるいは例外ハンドラを自分で書くのかな。
コンパイラオプションは覚えとらんので書けない。

とりあえずメモリアクセス違反を握りつぶすのも問題だから
VC2005でデフォルトが例外をcatch(...)で取れないようになったのは
妥当なことなのかな。

74 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 08:33:44 ]
>>72
それが一番だよな。
エラー処理が不十分てことだからDLLを直させるべき。

でも自分の担当じゃないDLLの細部まで調べないと云々は納得いかんな。

社外の作成したDLLだからソースなしで
責任転嫁だとか本当にお前の担当部分にバグがないのかとか・・・
愚痴になってしまったのでおしまい。

75 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 09:30:00 ]
>>73
C++例外でないアクセス違反を、C++の構文で捕捉できた事が異常。

76 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 17:52:57 ]
>74
>でも自分の担当じゃないDLLの細部まで調べないと云々は納得いかんな。
他人に直させるにしても、問題が本当に相手のソースにあるのかまではつきとめないと
やっぱり自分のミスでしたって事になった場合、人間関係に亀裂が入り易いからなぁ。
(はっきり指摘してやって逆ギレするのもいるが、そういうのは置いといて^^;)

少ない修正で済むような問題なら、教えてやった方が結果的にロスタイムも少ないしな。

77 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 18:43:19 ]
なぜfopen()が失敗するのか

78 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:02:47 ]
>>76
別に細部まで調べなくても
渡すデータがDLLの仕様どおりで、呼び出し部以外でコケてなけりゃどう考えてもDLLの問題だし

79 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:10:47 ]
下手に全部調べてからDLL担当者に「バグってますよ」というより、
「巧くいかなくて困っているんで、DLL側で助けてもらえませんか」と下手に出たほうが
協力を得やすく労力も減るかもしれない。



80 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:27:43 ]
もしそのDLLが普通に使われてるんなら
仮にバグがあったとしても今まで問題にならなかったということだ。

81 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:47:25 ]
とある事情によりDLL自体に手を入れ難い状況ということは今まで何事もなく使われてたんだろ

82 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 21:40:04 ]
まあ、ファイル名を引数等で指定して処理させるような形だったら
一度呼び出し側でfopen()して開けなきゃDLLの関数は呼ばなきゃいいんじゃね?
2度手間になるから、もちろんいじれるならDLLいじった方がいいが。

83 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:03:55 ]
VC++ .NET 2003のオプションで指定するインクルードファイルとかのパスって
どこに保存されてるの?

84 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:32:52 ]
デフォルトの設定 レジストリ
プロジェクトの設定 プロジェクトの定義ファイル

85 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 19:15:31 ]
レジストリ内の場所ってわかる?
レジストリエディタで目的のパスで検索かけてもHitしないんだけどさ・・・

ちなみにオプションのVC++ディレクトで設定する、インクルードファイルとか実行可能ファイルとか指定するとこなんですが

86 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:30:15 ]
VC++2005なんですが
自作のクラスにメンバを追加したり、STLなどの既存のクラスを読み込んだりしたときに
かなりの頻度で、プロジェクトを閉じて開いたり、VSを再起動したりしないと
:: や . や -> などを入力した後の一覧に追加したメンバが表示されないのですが
再起動などせずに解決する方法は無いのでしょうか

87 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:29:25 ]
MSに要望出せ

88 名前:デフォルトの名無しさん [2007/05/08(火) 20:40:19 ]
なぜかある場所でメンバ関数呼び出すと
thisポインタを使わないとメンバ変数が使えなくて
thisで指定しないでその変数に行くとランタイムエラーだされるんですが

これはメモリの領域破壊のバグのひとつでしょうか?

89 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:05:01 ]
ある場所をはっきりさせてから質問してください



90 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:09:54 ]
ランタイムエラーが出るんならランタイムに行ってんだろ

91 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:14:06 ]
ランタイムの使い方がおかしいんだろうね。
その辺りのコード晒してみ?

92 名前:デフォルトの名無しさん [2007/05/09(水) 15:54:38 ]
スレ違いでしたらすみません。
質問があります。
ホームページビルダーを久しぶりに起動したら、
次のようなエラーメッセージが出て、起動できなくなりました。
何か解決方法はありますでしょうか?よろしくお願いします。
環境はOSがXP、HBはV9です。

-----------------------------------------------------
Microsoft Visual C++ Runtime Library

Assertion failed!

Program: ... Files\IBM Homepage Builder V9\bin\hpbpage.exe
File: .\RegistryBase.cpp
Line: 81

Expression: code == ERROR_SUCCESS
-----------------------------------------------------

93 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 16:19:41 ]
ホームページビルダー作った会社に訊け

94 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 18:57:27 ]
>>92
ここは「Microsoft Visual C++を使う人」のためのスレです
Microsoft Visual C++を「使って作られたソフトを使う人」はお帰りください

95 名前:デフォルトの名無しさん [2007/05/09(水) 21:27:25 ]
ウェブ上に公開されているサンプル プロジェクトをビルドすると、次のエラーが出て失敗します。
環境はWinXP、VC++2005です。

> error C2678: 二項演算子 '<' : 型 'const ErrorEntry' の左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作; ヘルプを参照)。
> c:\program files\microsoft visual studio 8\vc\include\xutility 267


試したサンプルはWinsock Programmer's FAQのAsynchronous I/O Clientです
ttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/basics/AsyncClient/index.html
(ページの下のほうの「project package (33 KB)」からダウンロード)

ファイルはVC++5のプロジェクトが丸ごと圧縮されており必要なものは全てそろっているそうです。
VC++2005でプロジェクトを変換して開いたのですが、上記のようになりました。
エラーの場所が場所なのでコンパイラに渡すオプションあたりをいじる必要があるのでしょうか?

ご教示お願いします。

96 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:40:31 ]
全然関係ないけど
P.J. Plaugerが自ら語るVS2005搭載C++テンプレートライブラリ
STL.NET

97 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:36:26 ]
従来のSTLの機能の大半は.NET Frameworkクラスで事足りるのにSTL.NETとはこれいかに

98 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:39:31 ]
>>97
まぁ読んでみれ
www.microsoft.com/japan/msdn/vs05/visualc/stl-netprimer.aspx

99 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 20:00:32 ]
なんでこう、バージョンアップするごとにIntelliSenseがバカになってくいんだ・・・



100 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 20:03:28 ]
新しいものに慣れるのがつらい年頃なのかね。

101 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 20:19:52 ]
そうか、いくらファイルを保存してもインテリの情報が更新されないのが新しいものなのかw

102 名前:デフォルトの名無しさん [2007/05/11(金) 00:49:58 ]
>>99
IMEも98ぐらいの時が一番賢かった気がする。

103 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:55:58 ]
それはない

104 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:08:03 ]
ATOK使おうぜ

105 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:06:10 ]
いやVCのインテリは付いたときから馬鹿だろ
それだけがVBの取り柄

106 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 19:29:34 ]
>>104
そのあたりは無理に標準でついてるもの以外を使う必要が無いからなぁ

107 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:10:48 ]
Japanist2003

108 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:47:08 ]
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPTSTR lpCmdLine,int nCmdShow){
MessageBox(NULL,lpCmdLine,"1",MB_OK);
if (lpCmdLine=="/abc"){
MessageBox(NULL,lpCmdLine,"2",MB_OK);}
return 0;}

これで実行ファイルを1.exeとしますと、1 /abcとコマンドラインから実行しても
2つ目のメッセージボックスが出ないんですが何故でしょうか?VS2005,WinXPです。

109 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 18:22:15 ]
何それ?



110 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 19:04:09 ]
>>108
文字列の比較方法を調べなさい

111 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 19:15:58 ]
できました、ありがとうございました。

112 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 20:03:30 ]
_tWinMain

113 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 22:31:06 ]
他のC++用IDEにある、IntelliSense同等の機能の方が、圧倒的に性能いいの?

114 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:34:02 ]
他は知らんが
個人的には VS2003 のインテリセンスの具合が好き
2005 はインテリセンスに限らず全体的使えないと思う

115 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:18:05 ]
あー俺も。2003から離れられない。

116 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:57:05 ]
pimplイディオムを使うとインテリセンスも利かなくなるんだけど
これって意図された動作なのかただの偶然なのか?

117 名前:デフォルトの名無しさん [2007/05/19(土) 12:09:55 ]
昔VC6.0で作ったプログラムをVC2005に移植したいんですが、
そのままだとビルド出来ませんでした。

プロジェクト自体は変換とか出来たんですが、StdAfx.hでインクルードされてた
Windows ヘッダー ファイル群(windows.hとか)が、No such file or directoryでエラーになります。
かといってこれを外したらコンパイル通らないし・・。

1から組むのは大変なんで、何とか使い回せないかと思うのですが、
何かいい方法ありますでしょうか。


118 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:12:36 ]
Express EditionでPlatform SDKをインストールしてないとか、
パス通してないとかってオチはないよな?

119 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:16:38 ]
No such file or directoryぐらいの簡単な英語なら理解できるだろ



120 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:23:22 ]
>>117
おいおい初心者の俺でも分かるぜ。

121 名前:117 [2007/05/19(土) 14:01:08 ]
117です。
すみません、仰るとおり、SDKをインストールしていませんでした。。。
インストールしたらインクルードは解決しました。

今度はコンパイルエラーとwarningがいっぱい出てきましたが
ワーニングは無視してコンパイルエラーを修正。
(コンパイルエラーは for(int i=0) の i を for以降で使ってました)

次に「ファイル 'LIBC.lib' を開くことができません」が出ましたが、これはググッて解決。
(プロジェクトのプロパティで特定ライブラリの無視にLIBC.lib追加。)


現在、このエラーと格闘中です。
「zlib.lib(gzio.obj) : error LNK2019: 未解決の外部シンボル _errno が関数 _gz_open で参照されました。」







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

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

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