1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
934 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:23:03 ] まだわかんねー。 何がやりたいんだ。 構造体の定義と、変数の宣言とその変数のextern宣言が必要だが、そもそも変数(実体)がない。
935 名前:デフォルトの名無しさん [2009/02/16(月) 18:29:52 ] #include "st.h" でいいんじゃないの?何がしたいのかまったくもってわからない。
936 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:30:27 ] ageスマソ
937 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:08 ] externでぐぐるぐらいしてから来たらいかがですかね 定義、宣言、参照について全く理解していない気がします。
938 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:14 ] グローバルに構造体の型を宣言しています。 さらに、実体もグローバルに定義しています。 実体に値が入っていて、 その値をスレッド内でグローバルで定義した実体を通して 参照したいです。 グローバル変数を使う知識として、 externを付けることは知っているのですが、 そもそも、スレッド内からグローバルに定義した 構造体にアクセスできるかどうかわかりません。 何か方法がありましたら、教えてください。 >>935 やってみたのですが、そのようなヘッダはありませんと怒られてしまいました。
939 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:14:55 ] あと、拙い説明にもかかわらず ご返事いただきありがとうございます。 >>937 結構ぐぐったのですが私の理解力が足らず申し訳ございません・・・
940 名前:935 mailto:sage [2009/02/16(月) 19:15:48 ] // FILE : st.h struct st { ... }; extern st g_st; // FILE : st.cpp #incluede "st.h" st g_st; // FILE : a.h #include "st.h" class A { ... }; ってことね。とりあえず何を参考に勉強してるのかしりたい。
941 名前:デフォルトの名無しさん [2009/02/16(月) 20:08:02 ] すいません、聞きたいのですが。。。 Windowsファームアプリケーションを作成したのですが、ほかのPCで動作しません。 「このアプリケーションの構成が正しく・・・」と表示されます。 リリースコンパイルもしましたが動きません。 「プロパティ」の「C++」の「コード生成」の「ランタイムライブラリ」を「マルチスレッド」にすると、コンパイルすることができません。 いったいどうすれば動くのでしょうか? ほかのPCに、ランタイムを入れない方法を探しています。 お願いします。
942 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:34:19 ] >>941 ×ファーム ○フォーム 純粋なWin32アプリや標準ライブラリだけを使うコンソールアプリなら ライブラリを静的にリンクすればよいと思うけど、 Windowsフォームアプリケーションでランライムに依存しないのは無理じゃないの?
943 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:04:01 ] > Windowsファームアプリケーション C++/CLIだったりして・・・。そのPC、.netframework入れてないとかw
944 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 07:42:27 ] >>941 >ランタイムを入れない方法を探しています。 無理 フォームアプリはランタイム(.NET Framwork)必須
945 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:57:12 ] いろいろ試した結果、パスに日本語が入ってると読み込めないようです どうすれば読み込めるようになりますか? char fname[] = "C:\\テスト\\test.txt"; ifstream fin; fin.open(fname); char c; while (fin.get(c)) { printf("%c", c); } fin.close(); if (getch()) return 0;
946 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:42:13 ] locale設定した?
947 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 13:04:17 ] setlocale(LC_ALL, "japanese"); ifstream fin; こうすれば読み込めるようになりました、ありがとうございます
948 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 18:05:29 ] 先物の夕場は証券自己とかの約定させる気のない発注・取り消しに個人が振り回されて 値がついてる感じだな
949 名前:デフォルトの名無しさん [2009/02/18(水) 00:28:05 ] VC++とVB&C#の違いは大まかに言うと オブジェクト->プロパティ オブジェクト.プロパティ という理解でいいんでしょうか?
950 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:29:58 ] 出直して来い
951 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:32:44 ] すごい理解
952 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:46:47 ] >>949 親読んでこい 説教してやる
953 名前:デフォルトの名無しさん [2009/02/18(水) 17:59:43 ] VC++ 2005ExpressEditionでWin32アプリ作ってます。 int WINAPI WinMain( HINSTANCE hi, HINSTANCE hip, LPSTR sc, int ic ) { MSG Msg; char *str; memset( &Msg, 0, sizeof( MSG ) ); return ( int )Msg.wParam; } strが0xcccccccc<不適切なPtr>となるのはなぜですか。 C++ならstring使えっていう事なんですか?
954 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:01:33 ] 何が疑問なのかわからん。 そのstrは単に初期化してないポインタだからそのままじゃ使えないだろう。
955 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:02:27 ] strが初期化されていないから不定値。 デバッグ時に0xccで埋められてるだけ。 実際にアプリケーションを動かすと、不定値。 char *str = NULL; とかで初期化する。
956 名前:デフォルトの名無しさん [2009/02/18(水) 18:10:20 ] なるほど。 newしてあげれば不適切Ptrではなくなるんですね。 ありがとうございます。 あのぉ。。。もひとつ疑問がでちゃったんですが、いいですか? newして例外出てんのに期待通りの動作してるのはなぜですか これが解決できたら1年ぐらいROMしときます。
957 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:26:16 ] 例外の内容によるでしょう。 具体的にコード出してこういう例外が出たと書いてくれないとわからんよ。
958 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:35:51 ] >>956 >newしてあげれば不適切Ptrではなくなるんですね。 なんもわかってねぇじゃん まず、入門書と紙と鉛筆用意して全文書き取りからはじめたほうがいいぞ
959 名前:デフォルトの名無しさん [2009/02/18(水) 19:22:49 ] すいません。3日かかってどうしても直らないエラーがあるので教えて下さい。 ビルドすると、 fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory e:\visual studio 2005\projects\キャプチャ\irsystem\stdafx.h 43 というエラーが出ます。 環境は Visual Studio 2005 Professional Edition sp1 OS:Vistaです。 Visual Stadio Professionalかつフルインストールしているので、 MFCが入っているはずなのですがどうしても動きません。 どなたかわかる方いらっしゃいますでしょうか。 わかる方がいましたら教えて下さい。
960 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:42:35 ] >>959 うーん、なんかVC2008eeででるんと同じようなエラー内容だなぁ・・・ なんか設定する必要あんのかな?
961 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:43:35 ] そのinclude文のとこ右クリックして開いてみ それで見つからないならインクルードパスの設定すればいい
962 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:52:04 ] ツール - オプション - プロジェクト - VC++ ディレクトリ で 「インクルード ファイル」の設定内容をチェック バージョンの違いでちょっと文言が違う鴨試練
963 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:03:24 ] support.microsoft.com/kb/320479/ja これかなぁ・・・なんか違う?
964 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:25:58 ] ライブラリのパスの直下のlibファイルはリンクできるのですが、 サブディレクトリのlibファイルは、下記のようにはリンクできないのですか? OK #pragma comment(lib, "mylib.lib") NG #pragma comment(lib, "lib/mylib2.lib")
965 名前:デフォルトの名無しさん [2009/02/18(水) 21:48:11 ] hhj
966 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:07:10 ] #pragma comment(lib, "lib\\mylib2.lib")
967 名前:964 mailto:sage [2009/02/18(水) 23:03:19 ] 966 もちろんディレクトリ区切りを\\にしてもだめでした。 それにフルパスで記述したときに/で通るので、多分原因はそこではないと思います。 #pragma commentでライブラリファイルを指定するときに、サブディレクトリ内もちゃんと見るんですよね。 とりあえずそこの確認がほしいのです。
968 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:24:34 ] 自分のプログラムとしてはなんかlibに関してはプロジェクトに追加してるかどうかだなぁw ヘッダ読んでpraguma云々の記述はlibファイルなんかねーとこ指してるけど動いてるw って状況やってみそ ヘッダとlibファイルのプロジェクトへの追加な
969 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:40:56 ] ./hoge/lib.lib とかでもダメぽ?
970 名前:964 mailto:sage [2009/02/19(木) 00:17:33 ] ファイルの階層はこんな感じです。 C:\MyLibrary ←VC++ディレクトリ-ライブラリとインクルードの一番上で指定。 mylib.lib lib mylib.h (#include <lib/mylib.h>は失敗しない) mylib.lib (上では区別のためにmylib2.libと書いたけど、コピーしたもの) プロジェクト-リンカ-追加の依存ファイルで指定しても 1>LINK : fatal error LNK1104: ファイル 'lib/mylib.lib' を開くことができません。 と出ます。 ./lib/mylib.libも同様にpragma でも依存ファイルの指定でも失敗しますorz
971 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:19:58 ] まさか、lib\\mylib.h のなかに #pragma comment(lib, "lib/mylib.lib") って書いている わけじゃないだろーな
972 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:23:57 ] コンパイルしようとしてるソースファイルはどこなんだよ
973 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:03:28 ] // main.cpp // マイドキュメント-VS2008-Projects/Test/Test // = プロジェクトディレクトリ #include <lib/mylib.h> // OK #pragma comment(lib, "lib/mylib.lib") // NG //#pragma comment(lib, "C:/MyLib/lib/mylib.lib") // OK //#pragma comment(lib, "mylib.lib") // OKだけど違うファイル int main() { const int ret = test_func(2); return 0; } // mylib.h #pragma once int test_func(int val); //mylib.cpp #include "mylib.h" int test_func(int val) { return val * 100; } 改行を削るとこのような感じになります。 コンパイルすると970のエラーメッセージが出ます。。。 もう遅いし、解決できそうにないのであきらめてフルパスで書くことにします。 ありがとうございました。
974 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:41:48 ] 同名の違うファイルにパスが通ってるのも問題じゃないか
975 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 03:16:25 ] つーか、自前のlibなら、#pragma comment(lib, "ほにゃらら")は ヘッダに書けよ。 したら、cpp にゃ、ヘッダをインクルードするだけで済むだろーが。 じゃないと、他のプロジェクトで mylib.h を使いまわす時に、lib をリンクし忘れるのがオチだ。
976 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:36:29 ] >>970 あるよ。 以上。 ↓次の方どうぞ
977 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:22:48 ] >>926 このコードの真ん中って、「this->」いらなくない?
978 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:24:50 ] >>977 TextBoxと紛らわしかったので、説明上念のためつけただけ。
979 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:28:08 ] >>978 いや、エラーになるでしょ
980 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:36:27 ] >>978 array<System::Windows::Forms::TextBox^>^ textBox; ↑ ひょっとして、これだけ、違うところに記述するんですか?
981 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:39:54 ] 同じメソッド内に書いたらそこでしか使えないじゃない。 まあそれで済むならそれでいいけど。
982 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:50:06 ] >>981 すみません。いけました。 ありがとうございます
983 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:52:20 ]