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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:44:23 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

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

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

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

718 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:19:08 ]
ビルドできないってどんな理由で?
ユニコード文字セットのせいじゃないの?

719 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:32:09 ]
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htmのコードをそのままコピペして使いました
そしてビルドしたところ以下のようなエラーメッセージが出ました

sample01.cpp(38) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

この他に二つエラーが出ましたが、
そちらは型変更のキャストを入れています

720 名前:717 mailto:sage [2009/05/28(木) 18:38:56 ]
すみません、>>719>>718の返答ですorz

721 名前:デフォルトの名無しさん [2009/05/28(木) 18:42:55 ]
>>719
まさに>>718
マルチバイトとUNICODEが混在してる。
プロジェクトのプロパティと使用してる文字セットを見直して。

722 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:57:36 ]
>>721
助かりました
Unicodeからマルチバイトに変更したら問題なく通りました
半日悩んでたので、ようやくすっきり出来ましたw

723 名前:デフォルトの名無しさん [2009/05/29(金) 02:03:34 ]
mfcの求人がないお(;ω;)

mFCこそしきょくの現代プログラミングだとおもうんだお(^ω^)


724 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 02:17:42 ]
>>723
あー、わかる
ホント仕事ないよなぁ・・・
っていうか別にこれに限らずプログラム組む仕事ならちょっとなれれば
なんでもできるからどこへでもまわしてくれって思うけどね

725 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:04:27 ]
MFCの求人がないお
というレスに対してのレスとしてそれは正しいのか?

仕事がないおじゃなくてMFCの求人がないおだぞ
的外れにもほどがあるお

726 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:17:32 ]
Webじゃ作れない業務に強くなるしか無いんじゃない?
ムスレの話題じゃないなw



727 名前:デフォルトの名無しさん [2009/05/29(金) 16:36:55 ]
ここで質問すべきなのか分かりませんが。

8FFFFFFFU と 1U では

_BitScanForwardした結果を返すスピードは
変わらないのでしょうか?

上位のほうにあろうと下位のほうにあろうと関係ないのでしょうか。


728 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:52:55 ]
自分で試しても違いがわからなかったら変わらないと言える。

729 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:53:31 ]
>>727
homepage1.nifty.com/herumi/diary/0811.html
のページによると_BitScanForwardはアセンブラレベルでは
bsfの1命令に落ちるみたいなので、変わらないんじゃないの

確実な答えがしりたいなら人に聞くんじゃなくて、Intelのサイトとかで
対象CPUの命令のスペックを調べること

730 名前:デフォルトの名無しさん [2009/05/29(金) 19:51:56 ]
今、学校の課題をやっているところなのですが、
「関数 'erfc' は定義されていません。」と出てしまいました。
erfc()はmath.hのエラー関数の関数で、
ぐぐったところ、標準ライブラリ(拡張)と出てきました。
どうすればいいでしょうか。お願いします。

731 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:20:17 ]
なんだ、まだ解決してないのか
先生に聞いてみな

732 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:44:58 ]
>>725
ないのはしょうがねぇじゃんw
でもそれ以外不可ってのが俺的にネックだなぁ・・・
って感じでレス書いてる内に俺の都合レスになったw

733 名前:デフォルトの名無しさん [2009/05/29(金) 20:58:57 ]
>729
1命令で収まりそうですね。
ビットを探すためにループ処理はしていませんね。
ありがとうございました。


734 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:38:59 ]
>>724
畑違いだとめっちゃしんどいぞ。

735 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:40:12 ]
>>734
っていっても俺はじめゲーPGだしw

736 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:33:07 ]
関数を作ると、

関数に 2 個の引数を指定できません。

と出るんですが、どうすればいいでしょうか





737 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:00:51 ]
関数プロトタイプを見直せ。

738 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:01:23 ]
それは作ったほうじゃなくて呼び出したほうのエラー
具体的にどうやったのか?

739 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:49:23 ]
>>737,>>738
分かりました、ありがとうございます
いままで関数のほうばかり見て、
関数プロトタイプの括弧の中を記述し忘れていました

740 名前:デフォルトの名無しさん [2009/05/30(土) 20:01:17 ]
さっきVisual C++ 2008 Express Edition をインスコしたとこで、とりあえず簡単なプログラム実行させようとしたんだけど、

include ファイルを開けません。'iostream.h': No such file or directory
って出てコンパイル通らんという状態なんだが

Cygnusでは実行できたからソースコードが悪いわけではないと思うんだが・・・
それとも新規プロジェクトはWin32コンソールアプリケーションじゃあ駄目だったのか?

741 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:08 ]
インクルードパスに追加すればいいだけでは?

742 名前:740 [2009/05/30(土) 20:16:25 ]
#include <iostream.h>は#include <iostream>にしたらエラー吐かなくなった。 
なんか新しい書式だと.hを付けないから古いほうだとエラーになるとかなんとか…?
でも俺らの参照する文献(ネット上も含めて)には旧バージョンもまだまだあるだろ…迷惑な

でも#include <iomanip.h>のほうはエラー吐き続けるんだが・・・

743 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:32:56 ]
#include <iomanip>


744 名前:デフォルトの名無しさん [2009/05/30(土) 20:48:24 ]
すみません。書籍スレと迷ったんですが、こっちで聞かせてください。

大分、MFCにもなれ、自作アプリを3個くらい手の込んだのを作りました。ある程度のアプリなら
ネットやら書籍で検索しながら作れるような気はしてます。
書籍もオークションやらブックオフで色々あさって技術評論社とかAsCIIのを
12冊くらい持ってます。で、色々お勧め本をみるとハーバートシルトのMFC6.0という分厚いやつがお勧めらしいですが
本屋でぱっと見た限りほとんど知ってる事だと感じました。実際読んでないんでわかりませんが、
それでも含蓄あるから買ったほうがいいとか
そういうことありますか?

745 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:00:59 ]
人それぞれだと思うよ。
もっとも、趣味範囲でのプログラミングなら、参考書に載っていない部分を、工夫しながら作っていくのが面白いのだけどな。

746 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:13:51 ]
他に持ってる本で用が足りてれば買ってもしょうがないだろうけど
そんなの全部内容比較しなきゃ誰にもわからんだろ



747 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:45:45 ]
プログラミングに限らず大抵の分野について初心者用の本ばかりなんじゃないの。
中級向けの本なんて作るの大変なうえに売れないし、作る人いないんじゃないかな。
雑誌でちょっとずつ高度な話を連載して書籍化ってパターンがあるけど雑誌が売れなくて消えてく時代だし。

748 名前:デフォルトの名無しさん [2009/06/03(水) 00:07:40 ]
すいません。教えてください。
#include <string>
#include <iostream>
using namespace std;

class User
{
private:

public:
User()
{
cout << "デフォコン" << endl;
}
};

int main()
{
User x;
User y();
return 0;
}

User y();でデフォルトコンストラクタが呼ばれないのは何でですか?

749 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:16:32 ]
>>748
User型の戻り値を持つ関数yのプロトタイプ宣言とみなされてるとか

750 名前:デフォルトの名無しさん [2009/06/03(水) 00:25:40 ]
>>749
ありがとうございます
cout << typeid(x).name() << endl;
cout << typeid(y).name() << endl;
してみたら、さらに納得がいきました。

てか、よんでる入門書にそういう記述があったので・・・
本の正誤表に出てるかもしれないですね。

ありがとうございました

751 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:40:11 ]
>>750
てか、このパターンはぱっと見関数宣言と変数定義の区別が
つかないような気がするのでコンパイラによっては(VCでもバージョンによっては)
動作が異なるのかも知れない

C++相談室スレとかにいけば、どう解釈するのか正しいのか教えてもらえるかも

752 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:10:44 ]
Visual Studio 2008付属のVisual C++で、ダイロアグベースのMFCアプリケーションを
作り始めてみました。

エディットコントロールの使い方について教えてください。

エディットコントロールの使い方として、
・変数の追加で、カテゴリControlの変数を追加する。
 →GetWindowText()で内容を取得する。
・同様にカテゴリValueの変数を追加する。
 →UpdateData()で変数を更新して内容を取得する。
・変数を追加しない。
 →GetDlgItem()とGetWindowText()を使って内容を取得する。
このようにいくつか方法があると思っています。

それぞれの方法の長所や短所、使い分ける時の基準、みたいなものはありますか?

753 名前:750 [2009/06/03(水) 01:18:26 ]
www.geocities.jp/bleis_tift/cpp/defaultctor.html
こんなの見つけました。
コンパイラによっては警告を出してくれんですね

ちなみに私が使ってたのはVC++ 2008です

ありがとうござました
いろいろ氷解しました

754 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:26:20 ]
>>753
リンク先にもあるようにVisual C++は警告を出すコンパイラなんだけど気付かなかった?
そうなら、警告もエラーと同じくらいよく目を通したほうがいいよ。

755 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 06:18:35 ]
>752
数値の場合はDDX DDVが便利。
ただ複雑なことはできないのとUpdateDataが面倒
文字の場合は直にGetWindowTextが手っ取り早い
毎回GetDlgItemが面倒ならメンバ変数にしておく。
あとCEditのメンバ関数と使い分け

756 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 06:21:25 ]
と思ったけどDDX DDVの中味を自作する方法もあったな



757 名前:デフォルトの名無しさん [2009/06/03(水) 19:24:40 ]
入門書を一通り読み終えて
簡単なアプリを作りながらVisualC++の使い方を覚える本をはじめたのですが
最初の方で
String^ msg = now.ToString();
という記述が出てきました。
この^は見た覚えがないのですがなんか演算子なのですか?

今この書き込みかいててちょっと思いついたんですけど
もしかしてクラス名が
String^
ってことはないですよね?

758 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:39:37 ]
それは、C++のようでC++でない.NET用の拡張C++/CLIの構文。

759 名前:757 [2009/06/03(水) 19:41:40 ]
ありがとうございます。

すいません。取り除いてコンパイルしてエラー文検索で見つけました。
msdn.microsoft.com/ja-jp/library/ms235261(VS.80).aspx
ですね。

760 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:51:48 ]
どっちみちC++とは違うものだし、.netがやりたいなら普通はC#にする。

761 名前:デフォルトの名無しさん [2009/06/03(水) 20:08:17 ]
satou


762 名前:757 [2009/06/03(水) 20:51:42 ]
>>760
C++を選んだのはオブジェクト指向でネイティブアプリが作りたかったんですけど
CLIはネイティブじゃないんですよね。

C++でwindowsのネイティブアプリを作るとなるとVisual Studio 2008 Standard Editionあたりを買って
MFCで作るのですか?

そもそも見た目をグラフィカルに配置して、モデル部分やボタンなどのアクションをC++で書くというのを
イメージしてたのですが、製品版買えば、MFCアプリをフォームエディタでのようにペタペタはって
作れるのですか?

アマゾンでC++ MFCを検索すると2003年から新刊出てないようなのでMFCってもういまさらって感じですか?

何かをプラスでインストールしないと動かないアプリっていうのがいやなんですよね。

いろいろ聞いてすいません・・

763 名前:757 [2009/06/03(水) 21:12:16 ]
なんか色々あってややこしいですね・・・

いろいろ見てみたけど
勉強するならWin32APIですかね?


764 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:13:51 ]
とりあえずネイティブは無料版でも扱える(MFCは有料のみ)
俺的考えはビスタ以降は標準で.NETがインストールされてるからそこまで嫌う必要はないと思ってる

765 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:25:55 ]
757はなにをやりたいのかさっぱり分からん
例えばゲーム作りたいならC++とネイティブとDX、
ブラウザとかのツール系なら.NETのほうが開発しやすいし、
win系OS全部に対応させたいならWin32APIのみで開発するし
目的によって勉強する言語は変わってくるんだがなー

766 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:25:24 ]
mfc使ってみようと思う時はribbon触りたくなった時くらい



767 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:06:10 ]
そのリボンもWindows 7からWin32 APIの仲間入り。

768 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:41:00 ]
ループを抜け出すときにはbreakを使いますが、これを自分で手定義した関数から実行することは出来ますか?
void aaa()
{
break
;}
int main(){
for(int i=0;i++;i>5)
{
aaa()
;}
return 0;}
のような感じです



769 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:44:04 ]
不可。

770 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:52:55 ]
>>769
ありがとうございます

771 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:39:32 ]
VC++2005でCStringを使おうとすると以下のエラーが出てしまいます。
何か設定など必要なのでしょうか?

error C2065: 'CString' : 定義されていない識別子です。

772 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:48:17 ]
#include <tchar.h>
#include <atlstr.h>

773 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:01:37 ]
>>771
VC++2005eeじゃね?
有料版じゃないとMFCは使えないよ

774 名前:771 mailto:sage [2009/06/04(木) 04:55:54 ]
>>772様 >>773様 御回答ありがとうございます。

VC++2005eeにて文字列変数のコピーをするにはどうしたらよいのでしょうか?

775 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 07:11:09 ]
lstrcpy

776 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 07:28:37 ]
文字列変数というのがchar*なら>>775

#include <string>してstd::string使うとか。
C++/CLIならSystem::Stringもあるけどまあ別物か



777 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 08:11:08 ]
もしかして標準C/C++の基本がまだできてないなら
C/C++スレへ行け

778 名前:757 [2009/06/04(木) 11:55:50 ]
>>764
C++と.NETだとC++のランタイムがスタティックリンクができないので
.NETが入ってたとしてもC++のランタイムのインストールが必要って聞いたんですけど
そんなことないですか?


プロジェクトのプロパティでランタイムライブラリを
マルチスレッド デバッグ (/MTd)
に変えてリビルドしたら
コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr:pure' は同時に指定できません。
と言われました。
マルチスレッド デバッグ (/MT)でも同じ感じです。

>>765
作りたいのは「ブラウザとかのツール系」です。
.NETなのかな〜

まあ、両方ザックリ本読んで考えて見ます。




779 名前:デフォルトの名無しさん [2009/06/04(木) 13:44:07 ]
RPGゲームを作っています

main関数の中でとりあえず作ってみたのですが、
これをそのままクラスにするいい方法はありますか?
コード自体はたいした量ではないので、作り直すのは簡単なのですが
後学のためにも教えてください。

それとも戦闘画面をメインにし、フィールドを歩くときは別フォームを呼び出したりするほうが良いでしょうか


780 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 14:11:49 ]
地道に作り直せ

781 名前:デフォルトの名無しさん [2009/06/04(木) 14:29:42 ]
VS2003で作成されたActiveXコントロールの更改をしているのですが、
最適化オプションが、
・プログラムサイズ
・実行速度
の時は問題ないのですが、
・無効
・最大限の最適化
・カスタム
にして、リビルドを行うと、Regsvr32で以下のエラーが発生します。
「LoadLibrary("○○.dll")に失敗しました。指定されたモジュールが見つかりません。」
原因が全くわかりません。
どなたか原因をご存知の方教えて下さい。

782 名前:デフォルトの名無しさん [2009/06/04(木) 14:41:48 ]
>>780
うーん、残念です
ありがとうございました〜

783 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 15:18:13 ]
>>781
Dependency Walker などを使って依存しているライブラリに違いが
ないか調べてみるとか

784 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 16:12:10 ]
元々自分で作った物じゃないから作りを理解してないんだろ

785 名前:781 [2009/06/04(木) 18:13:26 ]
>>783
素晴らしいToolの紹介をありがとうございました。

最適化無効でビルドされたDLLと最適化実行速度でビルドされたDLLを
調べてみたところ、Regsvr32が失敗する方(最適化無効)で開けないDLLがあるというようなエラーが出ました。
そのDLLをプロジェクトに配置してみたら、ビルド後イベントのRegsvr32が成功し、エラーはなくなりました。

リビルドではエラーはでなくなったのですが、コマンドでRegsvr32を実行すると、
やはり同様のエラーが出て登録はできません。(リビルド時に登録されたDLLを登録解除もできません。)

786 名前:781 [2009/06/04(木) 18:15:00 ]
続きです。

これは何がいけないのでしょうか…?

引き続き、ご存知の方教えてください。



787 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:55:51 ]
class Test1
{
virtual ~Test1() = 0 {}
};
class Test2
{
virtual ~Test2() = 0 {}
};
class Test3 : virtual public Test1, virtual public Test2
{
virtual ~Test3() = 0 {}
};
これをコンパイルすると、
warning C4505: 'Test3::~Test3' : unreferenced local function has been removed
という警告が出るのですが、何が問題なんでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:58:19 ]
>>785
気になるのはDLLの配置場所かな

確かDLLのロードは
- 環境変数PATHで指定されたディレクトリ
- exeのある場所
- カレントディレクトル
などを参照したと思うけど、
VC上からビルドして実行すると、たまたまカレントディレクトリが上記の <project>
になるので、DLLは <project> 直下においても読み込んでくれる
しかし、コンソールから実行する場合、カレントディレクトリやPATHに注意しないと
うまくロードされないとか

789 名前:781 [2009/06/04(木) 19:25:52 ]
>>788
まさにその通りでした。配置場所をバイナリファイルと同じ場所に配置することで解消しました。
(一層上のプロジェクトファイルに配置してました。)

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

ただ、最適化オプションの違いでエラーになったり、ならなかったりするのが
不明のままなのが気になりますが…。

790 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 19:44:00 ]
C++初心者です。
TextBoxを画面に表示したいんですが上手く作成できません。
プロジェクト作成でWIN32を選択してからテキストボックスを作りたいと思っています。

TextBox textBox1;
textBox1 = gcnew TextBox;
textBox1->Location = Point(100, 16);
Controls->Add(textBox1);

をソースに追加したのですが

error C2065: 'TextBox' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'textBox1' の前に必要です。
error C2065: 'textBox1' : 定義されていない識別子です。
error C2065: 'gcnew' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'TextBox' の前に必要です。
error C2227: '->Location' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C3861: 'Point': 識別子が見つかりませんでした
error C2065: 'Controls' : 定義されていない識別子です。
error C2227: '->Add' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。

というコンパイルエラーが出ます。
テキストボックスはフォームでないと作成できないのでしょうか?
環境はMicrosoft Visual C++ 2005です。

791 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:02:55 ]
いろいろ間違いすぎてどこから説明したものやら・・・
とにかく最初から最後まで間違ってる

792 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:32:30 ]
>>790
そのTextBoxは.NETのWindows Formsの一部。
CLRプロジェクト以外では使えない。
おとなしく.NET Frameworkの世界にいなさい。

793 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:08:25 ]
一体どこからそういう情報もってきてんだ?
情報仕入れたとこに全部書いてるだろ

794 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:09:20 ]
入門書を4〜5冊はやらないと全体が見えないよな

795 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:11:38 ]
>>793>>778にレスね

796 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:17:58 ]
VC6 での質問です
変数の値が変更された時にブレークポイントがひっかかるようにする方法って
どのようにすればできるのでしょうか?



797 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:41:39 ]
[編集] メニューの [ブレークポイント] をクリックします。


[ブレークポイント] ダイアログ ボックスで、[データ] タブをクリックします。


[評価される式を入力してください] ボックスに変数名を入力ます。


[OK] をクリックしてブレークポイントを設定します。

798 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:53:07 ]
>>797
できました
ありがとうございます

799 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:50:52 ]
VC2008EEでデバッグしています。
forのループ内にブレークポイントを置いてステップアウトしているんですが、
ループの回数が1000単位なので、1回ずつ変数の状態を見るのは手間がかかりすぎてしまいます。
例えば100回に1回だけ変数の状態を見たい場合、いい方法はないですか?

800 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:55:42 ]
>>799
>>796-797の応用

801 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 17:22:52 ]
>>800
6と2008EEの違いのせいか、>>797の項目が見つからず、
いろいろいじってたらヒットカウントというぴったりの物がありました。
どうもでした。

802 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 18:21:37 ]
いまここに、Ansi C で書いたスタティックライブラリ c.lib があります。
そのライブラリをつかって、C++で書いたアプリケーション(GUIに依存しない部分を記述したもの)myapp があります。
GUI はお手軽に C# で書きたいので、アプリケーション部分 myapp を dll 化して、それを C# から呼び出したいです。

そこで、myapp.dll をつくりたいのですが、いざビルドしてみると、myapp から c.lib の関数を参照している部分でリンカエラーになります。
c.lib をスタティックリンクさせた状態で myapp.dllをつくるにはどうすればよいでしょうか?
c.dll を作るのがめんどくさいので、myapp.dll が c.lib を内包してくれるとありがたいのですが。




803 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:22:08 ]
できるはずだから、リンカオプションがまずいだけ。

804 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:17:43 ]
extern "C"
{
#include "[c.libの関数のヘッダ]"
}
でもリンクエラーが出る?

805 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:19:15 ]
リンカオプションですか....
c.lib をスタティックリンクするのって、もしかして
myapp.dll のソースで #pragma comment(lib, "c.lib")
だけではダメだったりしますか?
(もちろん c.lib のあるディレクトリにパスが通ってるのが前提として)


806 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:34:56 ]
それであっている。EXEでLIB使うときと同じ。
そういえば、そのLIBとDLLでCRTの設定は同じ?
異なっているといるとよくリンカに怒られる。



807 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 23:58:52 ]
現在デバッグビルドで試していますが、ランタイムライブラリの設定は c.lib と myapp.dll の両方で
「マルチスレッドデバッグ (/MTd)」で統一してあります。

呼び出し規約が c.lib だとデフォルトの設定のままで __cdecll に、
mydllではDLLのお約束(?)に従って __stdcall になっているのが気になりますが、
これは問題があったとしても実行時にでるものであって、リンカエラーとは関係ないですよね...
書き忘れましたが、リンカエラーというのは

未解決のシンボル "int __stdcall AAA()" (?AAA@@BBB@@CCC@D" が関数 "public: int __thiscall EEE::FFF() (?FFF@EEE@@GGG) で参照されました

というのがつらつらでてくるものです。
myapp(C++)もともと exe として作っていて、そこから c.lib を参照するために、
cライブラリには既に extern "C" が記述してあります。

そしてその exe はきちんとビルドできて、実行できていました。

それでも念のため、ライブラリの #include をさらに extern "C" で囲んでみると、
なぜか Direct3D のヘッダ d3dx9math.h で大量の

"operator *" Cのリンゲージ関数はC++のクラス D3DXVECTOR2を戻せません

メッセージがでました。

もうすこし試してみます。

808 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:34:48 ]
呼び出し規約の違いはdefファイル使わねえとそのまま名前装飾に影響する

809 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:54:26 ]
そういうことで惑うなら、呼出規約はソースコードに
いちいち書いたほうがいいよ。コンパイラオプションにて一括で指定するのではなく。

810 名前:デフォルトの名無しさん [2009/06/06(土) 02:08:13 ]
MFCのMDIで秀丸みたいなマルチドキュメントにしたいんだけど(タブ形式)
普通にEditビューじゃタブ形式にならないんだけど、どうすればいいの?

811 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:03:48 ]
なるだろ?
2008のSP1限定だけど

812 名前:807 mailto:sage [2009/06/06(土) 11:32:31 ]
なるほど、呼び出し規約を変えたら嘘のようにエラーがなくなりました。
いままで呼び出し規約を気にした事はなかったので、良い勉強になりました。どうもありがとう。

813 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:15:31 ]
なるほどなるほど

814 名前:デフォルトの名無しさん [2009/06/06(土) 12:30:33 ]
VC++でWin32プログラムを作成しています。
VS2008の雛形を元に、DialogBoxを追加しようとしているのですが上手く出来ません。
現在はファイルとヘルプの2個だけです。
やったこと
(1)WndProc()のmessage引数で、WM_CREATEが渡された場合に
DialogBox(hInst, MAKEINTRESOURCE(IDD_XXXBOX), hWnd, Xxx);
と書いた
(2)Xxxは以下のような関数です
INT_PTR CALLBACK Xxx(HWND, UINT, WPARAM, LPARAM);

コンパイルは出来たのですが、DialogBoxは増えませんでした。
どうかやり方を教えてください。



815 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:46:35 ]
その手順で普通にやればできるから、コードがどこかおかしい。

816 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:02:13 ]
ShowWindowしてないだけだったりして。



817 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:07:01 ]
通常はそれも不要だが。

818 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:21:55 ]
モーダルで停止






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

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

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