★初心者にVisual C++を教えるスレ★ Part34
at TECH
382:デフォルトの名無しさん
09/08/25 15:44:03
あと複数のconfigヘッダーがあるとかかな
383:デフォルトの名無しさん
09/08/25 15:49:13
>>381
ちょっとまだよく分かってない部分も多いんですが
これはlibpngは使ってないと思います。
PNGの処理はNDSSystem.cppってとこに書いてあるようなので
>>382
configヘッダーってなんでしょうか?
zlib.hの事ですか?
384:デフォルトの名無しさん
09/08/25 15:50:16
あ、zconf.hって方ですか?
385:デフォルトの名無しさん
09/08/25 16:11:30
そういうやつ。
そもそもスタティックリンク用のヘッダになってんじゃないの?
__stdcall の関数をリンクしようとしてるが、libは__cdeclとか__fastcallとか
386:デフォルトの名無しさん
09/08/25 17:39:29
>>385
すみません、ちょっとよく分かってないのでググって調べてたら
一応リンクは通るようになりました。
@crc32@12のような関数の修飾子は__fastcallって事みたいなので、
__fastcallでリンクしようとしてるが、LIB側は__cdeclになってるのでエラーに
なっているようなのでzconf.hの# define ZEXPORT となっているところを
# define ZEXPORT _fastcall と書き換えてzlibをビルドしたらエラーが出なく
なったんですが、こんなやり方でいいんでしょうか?
なんか違うような・・・
387:デフォルトの名無しさん
09/08/25 18:30:37
たぶん、Config作る時にDLLかスタティックLIBかで切り替えるDefineがあって
その時にZEXPORT を書き換えてるか差し替えてるんじゃないかと思うよ。
388:373
09/08/26 00:40:52
>>377
お返事遅れまして申し訳ありません。
URLリンク(loda.jp)
このようになっています。
よろしくお願い申し上げます。
389:デフォルトの名無しさん
09/08/26 01:18:00
もしくは、複数個所にzconf.hがあったりしないかね
390:デフォルトの名無しさん
09/08/26 01:30:32
>>388
そういやこないだのWindowsアップデートから挙動があやしいのがいくつかあったんだった
スタートメニューのVC++のとこのToolsからコマンドプロンプト開ける?エラーでないかな
391:デフォルトの名無しさん
09/08/26 01:44:24
ってXPは64bitだったりする?
うちはVista64だけど、VC++の設定にSysWow64出てきてないけど
こないだのアップデートでバッチファイルがかわって、Program Files (x86)の括弧綴じがうまくないようなんだよね・・・
392:デフォルトの名無しさん
09/08/26 05:17:17
visual studio C++ 2008で勉強している者です。
>>5の訂正が>>9>>10だと理解しました。
(コピペして実行していないけど…)
細かい質問なのですが、
私は
#include
main{
std::cout << "Hello World" << std::endl ;
return 0;
}
って習いました。
printf(""\n); も std::cout << "" << std::endl; も
手法が違うだけで同じという事でしょうか?
もしそうならどちらが正しい文なのでしょうか?
393:デフォルトの名無しさん
09/08/26 06:56:36
>>392
お前それ本当に習ったコードそのままなのか?
C++でそんなコードを教えるような奴はおでこにPentium4を貼り付けてアッカーマン関数を解かせる刑に処してやりたいんだが。
>printf("\n"); も std::cout << "" << std::endl; も
>手法が違うだけで同じという事でしょうか?
そうです。
C++言語はC言語とほぼ完全な互換があるのがウリなのですが、
C言語で提供される機能の多くは、C++の流儀にのっとった別の形で提供されています。
あなたの例では、printfがCの機能、coutがC++の機能です。
どちらも、C++としては正しい文です。
394:388
09/08/26 07:02:03
>>390-391
Visual Studio 2008 コマンド プロンプト
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
C:\Program Files\Microsoft Visual Studio 9.0\VC>
と出て来ました。
XPは32bitで搭載メモリ3GBです。
うーん、どうしてでしょう。。。
395:デフォルトの名無しさん
09/08/26 07:51:01
>>393
早いレスありがとうございます。
改めてVisual Studio c++ 2008で試してみました。
両者とも文字列は問題なく表記されたのですが、
""で囲わないで数や変数(int x;など)を表示させようとするとエラー(バグって表現すべきでしょうか?)が発生します。
printf("おまんこ\n");も
std::cout<<おまんこ<<std::endl;も大丈夫なのに
printf(0100005\n);
std::cout<<0100005<<std::end
だとprintf();だけ上手くいきません。
これはそういうもんだと割り切って次のステップに進むべきでしょうか?
396:デフォルトの名無しさん
09/08/26 09:18:31
VC++のbeginthreadはVB.NETのスレッドのように
メインプロセス終了はワーカースレッドの終了を待ってくれますか?
それともメインプロセスが終了するとワーカースレッドを
ぶちぎりして終了してしまいますか?
397:デフォルトの名無しさん
09/08/26 09:18:47
>>395
printfで整数を表示させる方法は書式指定子でぐぐれ
それぞれの道具(printf, cout)には道具なりの使い方がある。 ちゃんと解説書を読めってことだ。
398:デフォルトの名無しさん
09/08/26 10:01:17
>>397氏
解説書買いましたが、
URLリンク(www.nicovideo.jp)
がわかりやすいので先にこっちで勉強してました。
前の解説本の冒頭に書いてあったのですが、道具なりの使い方というと
包丁の使い分けみたいなものだと理解しても平気でしょうか?
と、書いて気づいたけど、なんか話が脱線してきた・・・orz
とりあえず、このスレに頼りっぱだったので
ググってみます。
ありがとうございました!!
ありがとうございました。
399:デフォルトの名無しさん
09/08/26 11:01:20
だいじなことなのでにどいいました。
400:370
09/08/26 11:20:29
>>371
うまくいきました。
ありがとうございました。
ランタイムライブラリを
「マルチスレッドデバッグ(/MTd)」にすべき所を
「マルチスレッドデバッグDLL(/MDd)」にしてたのが原因でした。
ご指摘を受ける前にもソリューションのプロパティをうまく行く奴版と全部比較してたんですが
テキストエディターで読めるとは思わなくて一々VCで開きなおして見てたんでもうイライラしてました
結局見逃してたんですね
エディタで見てやっと発見できました
401:デフォルトの名無しさん
09/08/26 11:39:18
>>392
すごい釣りだ。^^;
printfは組み込み型にしか使えない。
coutはユーザー定義型(クラスとか構造体とかうにおんとか…)にも使える。
402:386
09/08/26 11:42:08
実は、このソース公式から落としたtarballを解凍した奴だったんですが、
なんか色々足りないファイルとかもあったので、もしかしてと思ってsvnから
直接引っ張ってきたら、予想通り必要なファイルが全て揃っていて、何の
問題もなく一発でビルドできました。
あの苦労は何だったんだって感じですが、呼び出し規約とか今までおざなり
にしてたことが少し分かったので勉強になって良かったです。
因みにこのサイトが凄く分かりやすかったです。URLリンク(ray.sakura.ne.jp)
これで、やっと目的の開発に取りかかれそうです。
レスくれた方々ありがとうございました。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4935日前に更新/111 KB
担当:undef