★初心者にVisual C++ ..
116:デフォルトの名無しさん
08/11/14 20:33:40
>>113
さようなら\(^o^)/
あなたのような人はプログラムなんてやめてパソコンを廃棄するのがベストかと
117:デフォルトの名無しさん
08/11/14 20:50:38
なんで?
みんなできないくせに解答してるとか???
118:デフォルトの名無しさん
08/11/14 20:51:40
ヤフートップページを読み込んで任意の文字列を検索して保存する方法教えてください><
119:デフォルトの名無しさん
08/11/14 20:54:19
<a>タグ内の文字列調べて、キーワードが入ってたらそのurlのページをダウンロードして保存すればいい。
HTMLについては勉強した?
120:デフォルトの名無しさん
08/11/14 21:10:33
socketから直に受信データ取ってパーサ作らないと無理だろ・・・IWebBrowserしか知らん俺なんかは
121:デフォルトの名無しさん
08/11/14 21:15:35
>>120
IWebBrowserがあるなら、そこからIHTMLDocument2辺りを取得すれば、
HTML内のJavaScript同様、DOMでぐりぐり探れる。
122:デフォルトの名無しさん
08/11/14 21:36:13
>>119
誰がURLの話なんかしてるんだ?
HTMLから取得ってそのHTMLから取得する方法を聞いてるんだけど
どうやって取ればいいのかわかんない
一応、正規表現とかちょっとくらいはわかるよ
123:デフォルトの名無しさん
08/11/14 21:41:03
トップページのリンクから該当記事をDLするんじゃないのか?
トップページには記事おいてないぞ リンクが貼ってあったとしても
124:デフォルトの名無しさん
08/11/14 22:03:49
だから、そのリンク先は作成したブラウザで見れるんだけど
見るだけで、どうやればここから文字列を取得するのかがわかんないんだ
どこに対してどういう命令出すのかがわかんないんです
125:デフォルトの名無しさん
08/11/14 22:05:23
>>124
>>121
126:デフォルトの名無しさん
08/11/14 22:14:08
この質問者が日本人に思えないのは俺だけですか?
127:デフォルトの名無しさん
08/11/14 23:25:17
>IHTMLDocument2辺りを取得すれば
これわかんないんです
WEBブラウザの命令でそういうのがあるんですか?
WEBブラウザを調べたけどわかりません><
128:デフォルトの名無しさん
08/11/14 23:29:19
検索しろよボケ
一週間はレスすんなゴミクズが
129:デフォルトの名無しさん
08/11/14 23:32:10
ボケとかゴミクズとか何それ
お前どこのがきや
130:デフォルトの名無しさん
08/11/14 23:32:41
>>128
はよ答えろやカス
131:デフォルトの名無しさん
08/11/14 23:34:00
>>128
できないくせに解答者やってる奴ってお前のことかwww
はらいてー
なんでそんなに怒ってるの?
たかが2chでwww
132:デフォルトの名無しさん
08/11/14 23:34:23
>>130
IWebBrowser2のDocumentプロパティ
133:デフォルトの名無しさん
08/11/14 23:35:07
おい>>128
お前は頭わるくは無いと自分では思ってるようだが
要領は最高に悪そうだな
意味もわからんやろなw
134:デフォルトの名無しさん
08/11/14 23:36:41
>>132
それでいけるんですか
ありがとです
とりあえず>>128の小僧はこの先、解答すんなよ
知っててもしゃべらねくていいから
つーかお前出入り禁止
もうくんなカス
135:デフォルトの名無しさん
08/11/14 23:38:05
喧嘩両成敗ってことで>>134も出入り禁止な。そしたらたぶん賛同を得られると思う。
136:デフォルトの名無しさん
08/11/15 01:31:35
単語もでてるのに検索しないでわめき散らすだけか
アホとしか
137:デフォルトの名無しさん
08/11/15 11:35:22
自分で調べようともしない教えて君ってホント痛いな
138:デフォルトの名無しさん
08/11/15 11:51:38
ソースの編集は外部エディタのみで行い、VC++のエディタではread onlyで書き込みできないようにして開きたいんですが
設定で可能ですか?
139:デフォルトの名無しさん
08/11/15 15:49:42
ブラウザがどうたら言ってるのは釣りにしか思えん。
本気だったら病院から書き込んでるに違いない。
140:デフォルトの名無しさん
08/11/15 16:46:39
DQNてのはこんなもんだよ
期待しちゃ駄目
141:デフォルトの名無しさん
08/11/16 14:26:41
まさにこれからVC++2008EEを使ってプログラムを勉強しようとしている初心者です。
お勧めのサイトや書籍がありましたら教えてください。
とりあえずは猫でもわかるプログラミングを見て勉強しようと思ってます。
142:デフォルトの名無しさん
08/11/16 14:28:05
お前の現在のプログラミングに対する理解度による
全くの初心者なら猫でも〜でいいよ
143:141
08/11/16 14:33:16
さっそくありがとうございます。
昔N88BASICとCをちょっとかじりました。
とはいえX6800とかの時代なので、最近のWindowsプログラミングはさっぱりな感じです。
144:デフォルトの名無しさん
08/11/16 20:03:38
>>143
C++を勉強しつつ
Windowsプログラムの作法を勉強しなきゃならん
っていうのが初学者が投げ出してしまうところ
最初は
CとWin32APIっていうのが無難なのかなあ
145:141
08/11/16 21:09:08
>>144
なるほど、とりあずCからやってみているので、ある程度形になったらWin32APIを勉強してみます。
ありがとうございました。
146:デフォルトの名無しさん
08/11/16 23:00:03
EEはリソースエディタが無いのが痛いね
フリーのツールつかえばええやんって言うだろうが
初心者ほどまとまったパッケージがオススメ
つーことでウインドウプログラム作る様になったら
2万円もしないんだしStd買っちゃいな
クラス図も作れるし
147:デフォルトの名無しさん
08/11/16 23:00:19
昔のWin32APIを勉強してた自分を振り返ると、デバッグが上手ければもっと楽に習得できたと思った
VSの呼び出し履歴とか最初全然使ってなかったなぁ( ´ω`)
148:デフォルトの名無しさん
08/11/17 02:23:10
こんちわお世話になります
intについて聞きたいです
整数型の型名にintってありますよね
この型名のintと
関数mainの前に書かれているintは同じなのでしょうか?
私の所有する解説本ではmainについて
int main (void) メイン関数の定義開始
とだけ説明しているだけなのです
意味を並べていくと
int:整数型の型名 main:main関数の定義開始 void:戻り値のない評価式
ってことですよね
なぜmainの前にintを書くのか凄く気になります
勝手に想像しちゃうと
最後に書かれているreturn 0(戻り値が0なら正常終了、それ以外なら異常終了)
このゼロは整数なのでintを記載するのかな?
main関数定義開始の行頭にintはなぜですか?
私の所有する解説本は結局、最後のページまでこのことには触れていませんでした
勝手な推測してしまいましたが
どなたか正しい答え教えてください
149:デフォルトの名無しさん
08/11/17 02:35:43
あなたのもってる解説本が糞だということはわかりました。
150:デフォルトの名無しさん
08/11/17 02:39:05
int main( void )
↑ ↑ ↑
戻り値 関数名 引数
これを見て意味が分からないのであればプログラムはあきらめて下さい。
151:デフォルトの名無しさん
08/11/17 02:55:27
いやいやw、それで諦めるのはまだ早いだろ。
まだ148の読んでいた本がダメすぎただけという可能性が高いということしか分からない。
152:デフォルトの名無しさん
08/11/17 03:15:01
わかった!
>>150さんのでわかったよ
みなさん夜分お疲れのところありがとうございましたm( _ _ )m
153:デフォルトの名無しさん
08/11/17 03:18:47
ていうか
私の推測は当たってたってことですよね
もしかして私はセンスあるのかなwww
154:デフォルトの名無しさん
08/11/17 06:15:26
こんちわお世話になります
有料でも構わないのでC++の質問すれば
私が理解できるまで懇切丁寧に教えてくれるサイトないですか
解説本は解説するために専門用語連発でわかりにくい部分があるんです
その専門用語を解説するページが無いので
結局、解説本→グーグル→解説本→グーグル(たまにIT辞書) こんな感じです
進行するのがかなり時間かかってしまいます
かと言って基礎をすっ飛ばすわけにもいかず
超初心者用とか超入門とか書いてあっても中身は専門用語だらけ
無料の掲示板では解答者の善意で教えてもらってるわけで
解答者もいちいち注釈つけてられないですよね
てことで嘘つき解説本はタイトルに「超入門」とか「超初心者」とか書いてるけど
内容は本当の初心者にでもわかるものはないですね
だいたい解説に注釈無しで専門用語を使うこと自体
初心者には無理。
著者はタイトルに美味しそうな単語並べてとにかく売れる事が優先のものばかり
教えることが大前提の本はないでしょうか
超々ーーーぉ入門者でも理解できるサイト(有料可)か解説本教えてください
155:デフォルトの名無しさん
08/11/17 09:00:29
わかるまで懇切丁寧に教えて欲しいのならば学校に通ってください。
あなたの知能レベルで理解できるかどうかなど他人にわかるものではありませんよ。
156:141
08/11/17 09:35:16
>>146
stdは2005EEからのアップデートが可能みたいですね。
確かにそれなら安いし購入も検討します。
まだリソースエディタがフリーだとどう辛いのかもわかりませんが…
157:デフォルトの名無しさん
08/11/17 23:12:09
リソースエディタだけIDEに統合されてない
フリーソフトを使うってのは辛いって話でそ
158:デフォルトの名無しさん
08/11/18 00:56:24
coutとprintfの違いを教えてください
159:デフォルトの名無しさん
08/11/18 07:46:21
>>158
coutはC++でしか使えない
printfはCでも使える
160:デフォルトの名無しさん
08/11/18 07:51:42
URLリンク(www.asahi-net.or.jp)
こちらのサイトを参考にしてVisual C++ 2005で練習をしているところなのですが
完成したプログラムを「デバッグ開始」で動かそうとすると、
一瞬だけコマンドプロンプトの黒画面が出て、すぐに消えてしまいます
最初のうちは普通に実行され、黒画面が残ったままになったので
設定を間違えて弄ってしまったのかもしれません
原因、元に戻す方法がわかる方はいらっしゃいませんか?
161:デフォルトの名無しさん
08/11/18 09:02:07
リソースエディタなんてフリーで問題ないよ
どの道付属のアイコンエディタは使い物にならんし
162:デフォルトの名無しさん
08/11/18 09:03:33
>>160
最後にgetch()を入れればキーを押すまで画面がとまるよ
163:デフォルトの名無しさん
08/11/18 10:05:38
>>159
了解です
Printfで書くようにします
Cout使わないといけない場合なんかはないですよね
ありがとうございます
164:141
08/11/18 10:18:26
>>157
解説ページなどでResEditやXN Resource Editorでそれほど問題なさそうだったので、
どのようなデメリットがあるのかよくわからないということでした。
わかりにくくてすみません。
とりあえずフリーのものでやってみようかなと思います。
165:デフォルトの名無しさん
08/11/18 16:42:30
>>162
ありがとうございます
でも最後にgetch();を付けるとエラーが…
「デバッグ無しでビルド」を選択したら
とりあえずは消えない様になりました
166:デフォルトの名無しさん
08/11/18 16:44:50
そもそもデバッグしないでいいならCtrl+F5で実行すりゃいい
167:デフォルトの名無しさん
08/11/18 17:21:41
あとは
1.system("pause");
2.getchar();
3.main関数の最後の行("}")にブレークポイントをいれる
から好きなのを選べばいいと思うよ
168:デフォルトの名無しさん
08/11/19 12:30:43
今まで少しの間でしたがVC#2005EEを使っていました。
今日からC++を学ぼうと思い、VC++2008EEを使ってみたのですが
コード補完機能がないのが気になりました。
VC#2005EEのときは、1文字目から予測リストが出てくるので非常に使いやすかったのですが
VC++2008EEにはそのような機能はないのでしょうか。
169:デフォルトの名無しさん
08/11/19 13:32:24
>>168
ないよ
せいぜい関数の引数リストやクラスのメンバリストが出る程度だがそれでもないよりましだ
170:デフォルトの名無しさん
08/11/19 13:33:56
あ、そういえばCtrl+スペースで出たな
171:デフォルトの名無しさん
08/11/19 13:51:54
質問です。Visual C++2005を使っています。
プロジェクトをつくるとそのフォルダにReadMe.txtが自動で作られますが
ここに各ソースファイルの簡単な説明を追記したいのですが、どのようにすればよいのでしょうか?
作成されたReadMe.txtの最後の方に、
「AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする
ソース部分を示します。」とか書いてあるのですが、
各ソースファイルのコメント部分にTODO:と入れればその行が自動的に
ReaMe.txtに出力されるのかと思ったのですが、なんともなりません。
何かやり方が違うのでしょうか?
そういったReadMe.txtへの説明の自動追記機能はありますか?
それともRedMe.txtを直接開いて手書きで説明を加えなくてはならないのでしょうか?
172:デフォルトの名無しさん
08/11/19 13:52:53
あ、>>171はVisual C++ 2005 Express Editionです。
ひょっとしてエディションの問題???
173:デフォルトの名無しさん
08/11/19 16:06:59
>>165
コンパイルエラーならconio.hがインクルードされてないとかじゃね
174:デフォルトの名無しさん
08/11/19 16:13:36
// TODO: ここにコマンド ハンドラ コードを追加します
175:デフォルトの名無しさん
08/11/19 16:19:32
TODOコメント使うのはAppWizardであって、ユーザー(あなた)ではない
AppWizardがあなたが追加、またはカスタマイズすべきソース部分を教えてくれているだけ
AppWizardが生成するReadMeはあなたに対する説明文であって、あなたのアプリケーションを使う人に対するものではない
176:デフォルトの名無しさん
08/11/19 16:43:17
>>169
レスありがとうございます。たしかに、ないよりはましですね。
もやもやがなくなったので勉強してきます。
177:デフォルトの名無しさん
08/11/19 16:45:48
>>174-175
レスありがとうございます。
えーと、つまりReadMe.txtもTODO:コメントも、後から
自分で追記したりするようなものではないということでいいんでしょうか?
ReadMe.Txtはプロジェクト作成時にVCが自動作成したファイルだけを示し、
その内どこをいじるのかがTODO:コメントで指示されるという解釈であってますか?
178:デフォルトの名無しさん
08/11/20 19:29:23
いやあれウィザードが吐くだけの固定コメだから
メッセージマップとかをクラスのプロパティからいっぱい作って見れ 全部同じコメだ
179:デフォルトの名無しさん
08/11/21 12:12:07
int型のポインタを宣言するときは
int* pA; とするのがいいのか
int *pA; とするのがいいのか教えていただけませんか。
テキストにはどちらでも良いと書いてありましたが、できれば多数派に合わせておきたいので・・・
180:デフォルトの名無しさん
08/11/21 12:36:44
>>179
ポインタをtypedefする
typedef int *LPINT
LPINT pA;
181:デフォルトの名無しさん
08/11/21 16:31:05
>>179
後者が一般的
182:デフォルトの名無しさん
08/11/21 16:32:25
int * p;
ではダメですか?
183:デフォルトの名無しさん
08/11/22 16:31:46
名前:
E-mail:
内容:
超初歩の質問ですいません。環境はXP,VC++2008(SP1)でインストール直後のまっさらな状態です。
String *name = textName->Text;
が
error C3699: '*' : この間接指定を型 'System::String' で使用できません
と、VisualStudio2008からダメ出しされまして、エラーメッセージどおりに、
String ^name・・・・
としたらうまく通りました。
エラーの原因はStringクラスが定数文字列前提だからかな?とも
思ってますが、それよりも^演算子(なんでしょうか?)の
意味がさっぱり調べられません。
ググってもこれといったものが出ませんでした^^;
^の意味をどなたか教えていただけませんでしょうか・・・。
184:デフォルトの名無しさん
08/11/22 16:51:51
>>183
URLリンク(msdn.microsoft.com)(VS.80).aspx
185:デフォルトの名無しさん
08/11/22 17:08:32
183です。
助かりましたー。新仕様だったんですね。
186:デフォルトの名無しさん
08/11/22 19:29:02
ちょw
187:デフォルトの名無しさん
08/11/22 20:37:46
名前:
E-mail:
内容:
なんぞこれ
188:デフォルトの名無しさん
08/11/22 21:32:16
デスマの合図に決まってるだろ
189:デフォルトの名無しさん
08/11/23 00:33:46
質問です。VisualC++2008をつかっています。
ソースを書き換える前に保存をしたいのですが、
全部丸ごと別名で保存する方法を教えてもらえませんか?
.cppや.hを個別に保存はできましたが、プロジェクトの中身を丸ごと別名で保存はできないのでしょうか?
190:デフォルトの名無しさん
08/11/23 01:26:10
逆に考えるんだ
元のプロジェクトの中身をコピーして別名にしたあと上書き保存すれば結果は同じだと
191:189
08/11/23 02:01:38
>>190
なるほど、ありがとうございました
192:デフォルトの名無しさん
08/11/23 03:58:12
Visual Source Safeを使えばいいと思うよ
193:デフォルトの名無しさん
08/11/23 11:48:07
次のVC++で改良される自動生成コメント ...
// TODO: ここに 派遣さんが コマンド ハンドラ コードを追加します
194:デフォルトの名無しさん
08/11/23 17:04:29
SDKのダイアログリソースを見ると全部英語表記で記述してありますが
VCでビルドするともちろん日本語で表示されますが
日本語用のストリングテーブルがどっかにあるんですか?
195:デフォルトの名無しさん
08/11/23 22:14:00
調べた事ないが、リソースDLLがどっかにあるんじゃまいか?
196:デフォルトの名無しさん
08/11/23 22:25:55
予約語にinterface ってのがあるんだがこれ何?
Javaのinterfaceと同じ感じなのか?
言語仕様にはこんなのなかったとおもうんだが
197:デフォルトの名無しさん
08/11/23 22:28:58
C++/CLIのinterfaceではないだろうか
198:デフォルトの名無しさん
08/11/23 22:39:06
>>197
調べてみたらそのようですね
ありがと
199:デフォルトの名無しさん
08/11/24 16:16:26
すみません、ゲームをリリース版でコンパイルして実行ファイルを作ってみたんですが
MSVCR80.DLLというランタイムに依存してしまうようなんですが
このDLLは再配布可能でしょうか?
200:デフォルトの名無しさん
08/11/24 19:20:22
っ「URLリンク(www.microsoft.com)」
201:デフォルトの名無しさん
08/11/26 07:43:24
プログラミング超初心者で>>23と全く同じ状況になってしまいました
デザイン画面は 「このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。」というエラーが出てしまいます
↓ちなみにこのコードを追加したらなってしまいました
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//オプションボタン (ラジオボタン) の状態を確認
if (this->radioButtonKisu->Checked == true){
System::Diagnostics::Debug::WriteLine("奇数が選択されました");
}else if(this->radioButtonGusu->Checked == true){
System::Diagnostics::Debug::WriteLine("偶数が選択されました");
}else{
MessageBox::Show("奇数か偶数かを選んでください","お願い");
return;
}
}
前に成功したビルドの状態に戻せないんでしょうか
最初からやり直せば次に進めるんでしょうか
202:201
08/11/26 11:04:56
あぁ、自己解決しました…
203:デフォルトの名無しさん
08/11/26 20:30:45
ゲームを配布しようと思ってるんですが
コード生成のMTとMTdって何が違うんですか?
Dllが付くものは駄目だということは知っているんですが…
204:デフォルトの名無しさん
08/11/26 22:16:31
ライブラリが最適化されてるか否か
205:デフォルトの名無しさん
08/11/26 23:16:52
もう少しわかりやすく説明して欲しいんですが…
206:デフォルトの名無しさん
08/11/26 23:26:24
デバッグ用じゃないかデバッグ用か
207:デフォルトの名無しさん
08/11/27 00:00:34
ggrks
208:デフォルトの名無しさん
08/11/27 00:45:38
じゃあ要するに配布の再はMTを使った方がいいってことですかね?
209:デフォルトの名無しさん
08/11/27 00:52:04
そういうことにしておけばいいんじゃないですかね
210:デフォルトの名無しさん
08/11/27 00:59:05
くたばれクソども
211:デフォルトの名無しさん
08/11/27 09:56:20
MTdはデバッグ用でこれでビルドしたやつ配布すると馬鹿にされる。
212:デフォルトの名無しさん
08/11/27 11:39:13
>>208
Releaseモードでビルドするんだよ
213:デフォルトの名無しさん
08/11/27 16:52:45
myfunc.h という名前のヘッダファイルに
int max(int x,int y);
という関数プロトタイプを宣言し
main()があるソースファイルとは別のmyfunc.cppという名前のソースファイルに
int max(int x,int y)
の定義文を記述しました。
そしてmain()があるソースファイルのはじめに
#include "myfunc.h"
と記述して動いたのですが、はじめの#include文を消去しても、ヘッダファイルに適当な関数プロトタイプの宣言を追加しても
動きました。(定義はしていません)はじめに#includeを記述する必要はあるのでしょうか。
そもそもヘッダファイルの必要性がよくわかっていないので、教えていただけないでしょうか。
214:デフォルトの名無しさん
08/11/27 17:21:44
よくわからんが、とりあえず何か消したら念のためビルドのクリーンとかで
クリアしてから試してみては。
215:デフォルトの名無しさん
08/11/27 18:07:33
普通はヘッダの方は必要に応じて外部参照関数呼び出しを記述
extern int max(int x,int y);
で、cまたはcppソースの方にプロトタイプ宣言を入れる
cpp内で関数を参照する時、呼び出し側の関数よりも上に本体のコードがあれば
プロトタイプ宣言は必要ない。
本体が下にある場合はプロトタイプ宣言が必要。
216:デフォルトの名無しさん
08/11/28 00:11:19
>>214,215
ありがとうございました。いろいろ試してみます。
217:デフォルトの名無しさん
08/11/28 12:14:13
すいません、はじめてフォームアプリケーションを作ってみようと思ったんですが、
テキストボックスに入力した値がどこに入るのかわかりません。
Messagebox::Showでそれっぽいものを表示してみようとも思ったんですが、
System:::string この型は演算子として使用できません(String[0]とかも)となります。
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {}の中で自分で何かをやるんでようか?
助けてorz
218:217
08/11/28 12:16:01
MessageBox::Showを書いたのはbuton1_Clickの中です。
219:デフォルトの名無しさん
08/11/28 12:21:32
なんつーか、それ以前にやることやったほうがいい気がするが。
もしくは本でも読むか。
試しに、buton1_Clickの中に MessageBox::Show(textBox1->Text); とか書いてみ
220:デフォルトの名無しさん
08/11/28 12:28:35
>>219
ありがとうございました
おかげでスーパーハカーになることができました!
221:デフォルトの名無しさん
08/11/28 13:34:02
>>216
とりあえずmax()の本体を別のcppファイルに移してためしてみるといい
ヘッダーの使い方がわかるはずだ
222:デフォルトの名無しさん
08/11/28 21:13:21
>>221
ありがとうございます。max(int x,int y)が定義されているcppファイルを削除しても動いてしまったので
ためしに maxi(int x,int y)に名前を変えたところ、無事(? 動かなくなりました。
using namespace std; を main() があるcppファイルのはじめに記述していたのですが
stdの名前空間の中にmaxがあったのが原因だったみたいです。
その後、ヘッダーファイルをincludeしなかったりしてみたりと色々試してなんとなくですがヘッダの意味がわかった気がします。
223:デフォルトの名無しさん
08/11/28 21:56:04
日本語でおk
224:デフォルトの名無しさん
08/11/29 15:59:58
VC++2008無料版を使っています。
class の宣言文でpublic:を記述するとclassの位置までインデントが戻ってしまうのですが、
classの位置より1段階インデントした状態にオートインデントするにはどうすればいいのですか?
225:デフォルトの名無しさん
08/11/30 10:19:41
USBにエディタを入れて持ち歩きたいんですけど
Visual C++ライクなエディタってありませんか?
Notepad++Portableは知ってるんですけど、折り畳みがダサいので・・・
226:デフォルトの名無しさん
08/12/03 01:24:56
実行すると、Debugフォルダがかってに作成されちゃうんですが、仕様ですか?
227:デフォルトの名無しさん
08/12/03 05:33:26
>>226
仕様です。
どうしても作りたくなければReleaseビルド以外使うな
228:デフォルトの名無しさん
08/12/03 08:33:13
>>226
プロパティいじれば好きに出来るよ
$(OutDir)
とか
$(IntDir)
を好きな名前にしたらいい
229:デフォルトの名無しさん
08/12/03 18:13:00
ゲーム製作をしていてVC++2008 でコンパイルしています。
コード生成設定をMTdでやると通るのですが、MTでやると以下のエラーが出てしまいます。
LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
C:\Documents and Settings\***\デスクトップ\**\Debug\***.exe : fatal error LNK1120: 外部参照 2 が未解決です。
LIBCMTを無視しても逆にエラーが増えてしまうんですが、どうすればいいでしょうか?
ゲーム配布時にはMTdでもMTでもdllが付かなければ問題ないですか?
230:デフォルトの名無しさん
08/12/03 18:41:50
>>229
libcpmtdはデバッグ用。内部でデバッグ用のmallocとfreeを呼んでるから/MTdじゃないとリンクできない。
リリースビルドならlibcpmtを使う。
ってか、プロジェクトの作成をウィザード任せにすればその辺を自分でいじることなんてないと思うんだけど。
231:デフォルトの名無しさん
08/12/03 18:50:34
なるほど、debugモードでコード生成する時はMTdで
リリースモードでやるときはMTでやるものなんですね
試しにリリースモードでMT生成してみたら通りました。
どうもありがとうございましたー。
232:デフォルトの名無しさん
08/12/03 20:24:26
すいません
windowsXP SP2で visual c++ 2005 Express Editionを使っているんですが
以前のエラーのため、Windows Forms Designer Package ({7494682B-37A0-11D2-A273-00C04F8EF4FF})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Common IDE Package ({6E87CFAD-6C05-4ADF-9CD7-3B7943875B7C})
というようなエラーが出てしまいます
コマンド プロンプトで 'VCExpress /resetskippkgs' を入力しろと出るので試しましたが無理でした
調べたところbeta版がどうこうとあるのですが、自分はそのようなものは入れていません
beta版のアンインストーラーを使用しても、該当するものはありませんでした
何か解決策はないでしょうか?
233:デフォルトの名無しさん
08/12/04 10:44:16
そのエラーは何をする時に出るの?
234:デフォルトの名無しさん
08/12/06 01:18:55
お願いします。
WinXP SP2でVisual c++ 2005 Express Editionです。
UNICODEのIniファイルの情報をGetPrivateProfileStringで取得しようと
しているのですが、lpReturnedStringにはlpDefaultの値が入ってしまいます。
IniファイルがANSIのときはうまくいきます。
GetPrivateProfileStringの引数はワイド文字にしているつもりです。
意図的にGetPrivateProfileStringWにしてもダメでした。
UNICODEファイルの際の注意点などあるのでしょうか?
ご教授ねがいます。
235:デフォルトの名無しさん
08/12/06 01:29:29
>>234
INI系の関数はAでもWでもファイルの中身はマルチバイト文字として扱われる。
そのおかげで、Aで書き込んでWで読み取るなんてことができるんだけどね。
もちろん、文字コードの自動判別なんてやっていない。
236:デフォルトの名無しさん
08/12/06 10:27:18
>>234
> UNICODEのIniファイル
拡張子がINIってだけで中身がUnicodeじゃあ、INIファイルとは呼べ
ないシロモノだな。
自分で、CStdioFileクラスのCStdioFile::ReadString()/WriteString()
なりを使って、1行ずつ読み込んで文字列処理するコードを書くしか
ないな。(w
237:デフォルトの名無しさん
08/12/06 12:35:20
そうだったのか。
たしかにINIファイルって、ASCIIしか使わないけど……
238:デフォルトの名無しさん
08/12/06 13:08:53
> INIファイルって、ASCIIしか使わないけど……
んなこたぁない。シフトJISであれば漢字やカナ文字だって使える。
でなきゃ、漢字やカナ文字を含むパス名やファイル名の文字列保存に
使えない。
239:デフォルトの名無しさん
08/12/06 13:49:53
マジ?シフトJISなら良かったのか。
それは気がつかなかった。今度試してみよう。
ていうか、レジストリ弄りたくなくて、いまだにINIファイル使ってるんだよね。
240:デフォルトの名無しさん
08/12/06 14:34:14
Windowsフォルダに際限なくINIファイル作られるより、レジストリの方が
ずっとマシだと思えるんだが? ログインユーザー単位で設定が分けら
れるというメリットもあるし。
第一、レジストリなんて意識せずともWindowsのシステムでいじられ
まくりだぞ。
241:デフォルトの名無しさん
08/12/06 14:37:53
>>239
Shift_JISというか、そこで使っているコードページの文字コード。
欧米ならWindows-1252だし、繁体中国語圏ならBig5という具合。
>>240
ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。
242:デフォルトの名無しさん
08/12/06 15:03:55
>>241
> ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。
MFCフレームワークのデフォルト処理を前提に書いてしまった。言われ
れば、まぁ確かにそうだ。 ところで、複数インスタンス起動した
アプリからiniファイルへの同時アクセスとかって、今は問題ないん
だっけか?
243:デフォルトの名無しさん
08/12/06 16:50:51
たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。
自フォルダにINIファイル作るなんて普通じゃないか?フリーソフトなんかは特に。
わざわざ選択肢減らす必要なんてないしケースバイケースでよかろう。
244:デフォルトの名無しさん
08/12/06 17:30:28
>自フォルダにINIファイル
Program Filesに置いたらVistaで問題が出る。
All UsersのAppDataとかでどうか。
245:デフォルトの名無しさん
08/12/06 17:41:50
>>244
>Program Filesに置いたらVistaで問題が出る。
はじめやりずれーって思ったら他のユーザーでログインしたときを考えたら納得した
246:デフォルトの名無しさん
08/12/06 19:27:48
>>243
> たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。
昔は作りまくりだったんで、レジストリが搭乗したんだが?
今もMFCでCWinApp::SetRegistryKey()呼ばないとiniファイルを使うけど、
iniファイルが作られるデフォルトの場所はWindowsフォルダだよ。
>>244
> All UsersのAppDataとかでどうか。
自分(現在のログインユーザー)用の「マイドキュメント」フォルダの
パスはSHGetSpecialFolderLocation()で取得できるけど、これって取れる
んだっけ? もしかして決め打ち? それはそれで問題な気もするが?
なんて思ったら、
SHGetSpecialFolderLocation(hwndOwner,CSIDL_COMMON_APPDATA,...);
でいけるのか。 知らない間にCSIDLずいぶん増えているな。
URLリンク(msdn.microsoft.com)(VS.85).aspx
247:デフォルトの名無しさん
08/12/06 19:30:24
昔話がしたいだけか。
248:デフォルトの名無しさん
08/12/06 19:46:34
VistaでProgram Filesのデータを読み書きするのって各ユーザー毎に仮想フォルダ作って
勝手にやってくれんじゃなかったっけ?
具体的にはどういう風になんの?
正直Vistaなんて糞OS使った事もないから知らんが。
249:デフォルトの名無しさん
08/12/06 20:20:51
全ユーザー共通のINIファイルじゃないとダメってソフトでも
なければさほど問題はなさそうな気もする
つかこれってINIファイルに限らず他のセーブデータにも
言える事だろ
250:デフォルトの名無しさん
08/12/06 23:21:36
「Program Filesに置いたらVistaで問題が出る。」っていうのは、他の
スレでも見たような気がするが、実際何がどう問題なのかわからん。
すくなくとも、exe本体が存在するProgram Files下のアプリケーション
フォルダ内にiniファイルを作成して読み書きは問題なく動作している
けどな。
Administrator権限以外じゃダメとかなら、Vistaに限らず2000やXP等でも
問題になりそうな気がするし、セキュリティ上、別のログインユーザーに
iniファイル内容を見られると困るというなら、All Usersに置いても同じ
だと思う。
251:デフォルトの名無しさん
08/12/06 23:40:23
別のログインユーザに見られたら困る、じゃなくて
別のログインユーザから見られないから困るんでしょ。
Program FilesやHKLMに無駄に書き込むソフトなんざそもそもマルチユーザを前提としていないので
これらの挙動はソフトとしては想定外なわけで。
あと、管理者権限を持つプロセスから呼ばれると仮想ストアじゃないとこから設定ファイル読みに行ってNotFoundとか。
なんにせよUAC程度で不具合出るようなソフトは単純に行儀悪いだけだと思う。
252:デフォルトの名無しさん
08/12/07 00:27:46
>>251
そうそ
Program Filesにおいちゃうとアドミニ権限ないと
書き込めないし見れないんだよね
なんでアドミニ権限ないユーザが起動すると落ちるソフトとか結構あったりする
253:デフォルトの名無しさん
08/12/07 00:35:26
行儀が悪いのはむしろこういう勝手な事をOSにさせるMSだと思うが
別にユーザー毎の設定で問題ないアプリなら不具合にならないわけだし
結局の所はケースバイケースって事でしょ
ゲームアプリのセーブデータなんかはプログラムフォルダ内に入れとかないと
セーブデータ残したままアンインストールする場合、普段ユーザーが見ない所に
ファイルが残るしな
「行儀がいい」と「頭が固い」を履き違えてるんじゃね
254:デフォルトの名無しさん
08/12/07 00:43:20
>>253
いや、権限によってはProgram Filesを見れないから
アプリの起動自体できない
設定ファイルがないって感じで落ちる
ケースバイケースじゃなくてこう作らないと駄目ってところまできてる
255:デフォルトの名無しさん
08/12/07 00:48:55
さすがにそれは設定ファイルが存在することを前提にプログラムを組む方がおかしい
なかったらデフォルト値で動かすのが普通。
256:デフォルトの名無しさん
08/12/07 00:51:59
>>254
設定ファイルがないと動かないなんて作りになってるのは
ProgramFilesだろうがなんだろうが終わってるだろ
257:デフォルトの名無しさん
08/12/07 00:59:36
>>256
仮にProgramFilesが駄目だったら今度どこに保存すんの?
258:デフォルトの名無しさん
08/12/07 01:06:21
Vistaは持ってないけどこの認識であってる?
1.ファイルを読むだけだったらProgram Filesから行われる
2.書き込みが発生した場合、バーチャルストアで行われる
3.一度書き込みが発生したファイルは、バーチャルストアで読み書きが行われる
Program Filesから読めないとか、どこに保存するとか言ってる人がいるから混乱してきたが。
この認識が違うなら>>254に詳しい説明をしてほしい
259:デフォルトの名無しさん
08/12/07 01:11:29
>>258
そんなのセキュリティのポリシーの設定で変わるじゃん
駄目にしてある会社だったら読み取りも駄目だろ
260:デフォルトの名無しさん
08/12/07 01:15:46
その場合ってそのユーザにアプリって起動できんの?
インストールの設定も含めて
261:デフォルトの名無しさん
08/12/07 01:29:36
仮にそういうセキュリティ設定になってたとしたら
INIファイルどころかあらゆるセーブデータの読み書きができなくなるわけだから
INIファイルをどうしようが結局同じことだと思うけど
まあどうしても全てのユーザーで動作させたいんだったら全セーブデータを
>>244のようにするか、レジストリに全てぶっこむしかないだろうね
アホ臭いとしか言いようがないが
262:デフォルトの名無しさん
08/12/07 01:45:39
でもきちんと対応するってならそれっきゃないってことだろうな
まあ、業務でそういうところに当たらないとも限らないからちょっとメモっておこ
担当者がキチだと普通にこういうの要求されるよね
263:デフォルトの名無しさん
08/12/07 03:54:39
>>254
ファイルが読めないなら起動に必要なデータファイルはどこから読むんです?
264:234
08/12/07 04:26:59
豚切り失礼します。
>>236さん
遅くなりましたが、回答ありがとうございます。
そうですか。UNICODEはINIファイルとして使えないのですね。
勉強になりました。
265:デフォルトの名無しさん
08/12/07 12:46:44
>>258
3.が違う
266:デフォルトの名無しさん
08/12/07 16:07:48
>>265
どう違うの?
267:デフォルトの名無しさん
08/12/07 20:53:50
言ってみたかっただけじゃね。
268:デフォルトの名無しさん
08/12/08 01:31:32
CとC++の違いってヘッダがiostreamになって使う関数が違う以外にないの?
こんなんでオブジェクト施行とか騒いじゃってるの?拍子抜けなんだけど
269:デフォルトの名無しさん
08/12/08 01:38:10
クラス、テンプレート、多重定義、例外処理……、
オブジェクト指向に関係あるものないもの、CになくてC++にある機能なんていくらでもあるが。
270:デフォルトの名無しさん
08/12/08 01:49:56
クラスなんて構造体に毛がはえたようなものしょぼいんだよはっきりいって
271:デフォルトの名無しさん
08/12/08 02:18:40
馬鹿野郎!
それのおかげでインテリセンスの恩恵があるんだろうが!
272:デフォルトの名無しさん
08/12/09 00:47:26
C→C++の一番の利点は
コードが見やすいこと、これに尽きるだろ
C++に慣れるとCのでっかいコードは耐えられん
クラス化したくてウズウズしてくる
変数途中で宣言したくなる
273:デフォルトの名無しさん
08/12/09 00:51:53
C言語の勉強やってからC++に移行したほうが良いだろうか
それとも最初からC++から勉強しても問題ない?
274:デフォルトの名無しさん
08/12/09 00:57:11
>>258
バーチャルストアに書き込むのはマニフェストがない場合だけだよ。
マニフェストがあればあとは管理者権限への移行が成功すれば直接書くことになる。
275:デフォルトの名無しさん
08/12/09 01:19:02
>>273
いきなりC++でいいと思う。
共通する事柄はいずれにせよ学ぶことになるし、
Cで良く使うテクだけどC++ではあまり使わないのとか意外とあるし。
276:デフォルトの名無しさん
08/12/09 01:24:14
>>275
把握したありがっとう
277:デフォルトの名無しさん
08/12/09 03:21:41
>>274
つかそれって結局管理者権限で実行するってことじゃねーの?
他のシステムファイルからみとかで管理者権限が必要でマニフェストに組み込まれた
アプリじゃなければ>>258のようになるってことっしょ?
278:デフォルトの名無しさん
08/12/09 10:30:08
>>277
マニフェストがない場合、管理者権限でもバーチャルストア行き。
279:デフォルトの名無しさん
08/12/09 10:52:59
マニフェストがないという言い方は正しくない
280:デフォルトの名無しさん
08/12/09 12:44:06
一連の流れをみててもどうもわかりにくいです。
人によって言ってる事が違うというか。
管理者、制限ユーザー、マニフェスト関連で正確な挙動に
ついての詳細情報が掲載されてるサイトないですか?
VistaだけでなくXPや2000での情報も欲しいです。
281:デフォルトの名無しさん
08/12/09 14:48:03
>>280
一次情報源としてMSDNライブラリなど
例えばここらへん。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(technet.microsoft.com)
282:デフォルトの名無しさん
08/12/09 15:11:06
日本語でおk
283:デフォルトの名無しさん
08/12/09 15:16:27
初心者スレで英文持ち出してくるヤツは死んでいいと思うよ
日本と米で仕様が違うのもよくある事だしな
284:デフォルトの名無しさん
08/12/09 15:26:18
英文にしか情報がないようなことを初心者スレで質問するヤツは死んでいいと思うよ
285:デフォルトの名無しさん
08/12/09 21:38:14
>>284
初心者なんだから分からんだろ。
286:デフォルトの名無しさん
08/12/09 21:50:21
非標準言語のしか資料が無いと言うことが判っただけでも大きな進歩であり、
革新的な質問であったことは確定的に明らか。
287:デフォルトの名無しさん
08/12/09 22:55:05
誰か日本語でわかりやすくまとめてくだちぃ
288:デフォルトの名無しさん
08/12/09 23:24:08
ホームエディションだと管理者か制限ユーザーのカテゴリわけだけで
細かい設定はないんだよな
プロフェッショナルの管理者による厳しいセキュリティ設定まで考慮してもきりがないと思う
どうやっても管理者次第で動かない設定にできるんだし
XPホームエディションでProgramFilesに入れたアプリを制限ユーザーで動かしてみたけど
普通にINIファイルを含むセーブデータを読み書きできた
Vistaでマニュフェストの指定なしだとこの読み書きがバーチャルストアになるってことか
それを想定して動くつくりであればセーブデータもプログラムと同じフォルダでいいんじゃね
289:デフォルトの名無しさん
08/12/10 01:08:56
まぁ仮想ストアは救済策ってーか、MSお得意の泥臭い互換性の維持だからな。
多分将来的にはユーザーのデフォの権限を制限ユーザーにしたいんだろうが、
それVistaでやっちゃうとProgram Filesに書き込むアプリなだけで動かなくなるわけだし。
マニフェスト無しでほっとくのも止めやしないが、管理者権限のコマンドプロンプトやファイラから
起動したら別々の設定ファイルをうっかり作っちまうとかも起こりうるので、
requireAdministratorで起動毎にUACダイアログを出した方がいい。
そしてアプリのユーザーにダイアログをうざがられてAppDataに
書き込まざるを得なくなるというプレッシャーこそがUACの真意だとかなんとか。
290:デフォルトの名無しさん
08/12/10 02:03:25
かなりどうでもいい条件付けだな
291:デフォルトの名無しさん
08/12/10 11:56:44
VS 2003からVS 2008にしてみました
C++のソースファイルはUTF-8で書かれていて、VS 2003では概ね問題なくコンパイルできていました。
ところがVS 2008のcl.exeは、このソース内に定数として書かれた文字列を勝手にSJISに変換して内部処理するようです。これでは正常動作できません。
この余計な機能を、何とか避ける方法はないのでしょうか?
膨大な量があるので、今さらファイルをSJISに戻すとかすることは不可能なんです。
292:デフォルトの名無しさん
08/12/10 12:03:53
コードページは?
293:デフォルトの名無しさん
08/12/10 12:10:24
普通にコマンドプロンプトを開いて作業しているので、932のシフトJISです。
294:デフォルトの名無しさん
08/12/10 12:15:05
すいません、本当に簡単なことなのですが
if(argc == 3){
if(argv[1] == L"-o"){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
この
if(argv[1] == L"-o") の条件が通りません。
コマンドで test -o test1 のように打っても違うものとして認識しているようで・・・
画面にプリントしてみると同じなのですが、Lをつけるとデータが違うものになってしまうのでしょうか?
295:デフォルトの名無しさん
08/12/10 12:16:52
chcpで変えてみては?
つーか、UTF-8でダメな例が思いつかないな、再現可能なソース無いですか?
296:デフォルトの名無しさん
08/12/10 12:18:44
>>294
文字列の比較に直接 == は使えません。
297:デフォルトの名無しさん
08/12/10 12:29:10
>>291
コンパイルエラーなのか動作が変なのか
エラーメッセージがあればそれを書いてもらうと何かわかるかもしれません
>>294
argvの型はTCHARですか
298:デフォルトの名無しさん
08/12/10 12:39:28
またどこの言語からの転向者だろ
VSつながりでVBかC#あたりか
299:デフォルトの名無しさん
08/12/10 12:40:19
template <typename Foo, typename Bar> class Baz : public Bar { なんたら
void Qux( const Quux<Foo,Bar> & foobar ) {...};
};
class Bar { なんたら }; // (1)
VC2008で上のをもう少し複雑に書くと Baz::Qux での引数の型 Quux<Foo,Bar> が
(1) の Bar と解釈されてコンパイルエラーになってしまう
GCCだと通るんだけどなあ
300:デフォルトの名無しさん
08/12/10 12:40:36
>"argv[2]"
この書き方はPerlかPHPだろう
301:デフォルトの名無しさん
08/12/10 12:52:34
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます
302:デフォルトの名無しさん
08/12/10 12:53:27
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます
303:デフォルトの名無しさん
08/12/10 12:57:44
>>302
はい。
304:デフォルトの名無しさん
08/12/10 12:59:15
if( _tcscmp(argv[1],"-o") == 0 ) {
では
305:デフォルトの名無しさん
08/12/10 13:00:32
if( _tcscmp(argv[1],_T("-o")) == 0 ) {
では
306:デフォルトの名無しさん
08/12/10 13:01:43
if (_tcsicmp(argv[1],_T("-o")) == 0) {
では
307:デフォルトの名無しさん
08/12/10 13:03:35
>>304さんの方法でやってみたところ
エラー 1 error C2664: 'wcscmp' : 2 番目の引数を 'const char [3]' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
というようなことを言われました。
どうもこの変換できないというところが理解できないです。代入しているわけでもないのに何故?って感じです。
308:デフォルトの名無しさん
08/12/10 13:04:55
#include "stdafx.h"
#include "string.h"
#include "stdlib.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
if(argc == 3){
if( _tcscmp(argv[1],"-o") == 0 ){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
else{
printf("USage :\n");
printf("-o : **********\n");
}
}
else{
printf("引数の数が違います");
}
return 0;
}
これが全文です。
309:デフォルトの名無しさん
08/12/10 13:14:00
通常 "-o" の文字リテラルは char で構成される
文字セットがユニコードの場合 _tsccmp は _wcscmp にマップされる
_wcscmp が要求する型は const wchar_t * だからエラーになる
_T マクロは文字セットにあわせてユニコードの場合には "-o" を L"-o" と変える
L"-o" はワイド文字 wchar_t で構成されるリテラルだから通る
すまん思いきり間違えた 304は俺
310:デフォルトの名無しさん
08/12/10 13:18:33
UNICODEに拘らなければANSI Cで十分なんだよな
311:デフォルトの名無しさん
08/12/10 13:21:00
>>309
解決しました!ありがとうございます
312:デフォルトの名無しさん
08/12/10 13:47:31
>>291で質問した者です
再現可能なソースを作っていて気がつきました。
chcp 65001やchcp 437としても動作が同じで、文字列リテラルが強制的にSJISに内部変換されていることが分かりました。
UTF-8のソースファイルなのですが、「BOM」を付けると、このような動作になるようです。
BOMを付けないUTF-8だと、warning C4819 が山ほど出て、化ける文字までありますが、何とかなりそうです。
今回作った下の再現プログラムも、BOMありのUTF-8と、BOM無しのUTF-8では、動作が違ってきます。
#include <iostream>
int main()
{
std::cout << "項目" << std::endl;
return 0;
}
一応解決したことにします。ありがとうございました。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4348日前に更新/248 KB
担当:undef