1 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 16:08:39 ] おそらく、.NET開発でデファクトスタンダードに最も近い であろうC++/CLIについて語ろうぜ! このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。 .NETのクラスライブラリの使い方といった質問は姉妹スレ「くだすれC++/CLI(初心者用)」に お願いします。 前スレッドはこちら (p)pc8.2ch.net/test/read.cgi/tech/1126450441/l50 姉妹スレ くだすれC++/CLI(初心者用) (p)pc8.2ch.net/test/read.cgi/tech/1142144110/l50 managed C++ やろうぜ!! 002 (p)pc8.2ch.net/test/read.cgi/tech/1139043535/l50
447 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 08:38:13 ] >445 直接、D3DFORMAT の enum 値を出力してみたら? TRACE でも cout でも何でもいいけど ちなみに、コンパイラは VC8 なんだよな?
448 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 21:02:06 ] >>447 ちゃんと21が出たw VC8です デバッガがミスっただけかな。
449 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 18:29:40 ] フォームを多言語化して、ニュートラルと日本語のリソースを交互にいじってると 設定した値が元に戻ったりするんですが、これについて何かご存じな方 いらっしゃいますか?
450 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 18:35:42 ] 追記です VS2005上での話です。
451 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:44:35 ] この言語ほんとに流行りそうなの?
452 名前:デフォルトの名無しさん [2007/09/01(土) 20:26:10 ] .NET が流行れば。 だって既存の C++ のライブラリの ラッパーとしての存在価値は少なくともあるから。 で、.NET というか CLR ってこれからはやるのかね? mono でも ASP.NET をはじめとしていろいろ動く ようになってるし、.NET Compact Framework も 広がりを見せているようだけど。
453 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:22:06 ] C++/CLI自体が単体で流行ることはないと思う。 あくまでもC++の資産を.NETで利用するためのツール。
454 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:30:15 ] C++/CLI 自体は JDirect の正当な発展系だと思う .net が COM 拡張として発生したように、外部管理オブジェクトのハンドリング用言語として C++ を拡張したものだから Windows 用の Objective-C みたいなものなんだけどなぁ
455 名前:デフォルトの名無しさん [2007/09/01(土) 23:46:12 ] Objective-C つかったことないや
456 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:48:42 ] はいはい死滅死滅
457 名前:デフォルトの名無しさん [2007/09/02(日) 14:31:02 ] 2008になったらC++CLIは何かかわんの?
458 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 14:47:34 ] >>457 STL/CLRとこれまで規格に非準拠だった部分の対応。 例えばC型配列がarrayと同等に扱えるようななった。
459 名前:デフォルトの名無しさん [2007/09/02(日) 16:07:58 ] がるぽっ
460 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 16:09:48 ] C++0x が確定するまでは、大きな修正は入れてこないだろうね また、いろいろと言われるから(w
461 名前:デフォルトの名無しさん [2007/09/02(日) 16:50:15 ] なんか、見た目が変態的なソースコードになるよな・・・ 無理矢理.netに対応させた文法を追加せずに、 C++にライブラリで誤魔化したほうがマシな気が・・・ .netに最適化した言語、とかならC#ってのをやってるのだし、 あんまりC++/CLIの存在意味がないような・・・
462 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 18:05:21 ] それをやったのが mc++ で、マネージド・オブジェクトの判別が付かなくなったので 明示的に分離するように変更したんだよ C++ は既存のままで、CLI を追加構文で、これでようやく見通しが良くなったのさ oldSyntax で一度書いてみると、ライブラリで対応って言うのが以下に非現実的か よくわかるよ
463 名前:デフォルトの名無しさん [2007/09/02(日) 20:13:36 ] 正直 Managed C++ は「よけいわかりにくいわ!」って 感じだったからな。マネージドな部分とそうでない部分が 明確に分かれている C++/CLI のほうがわかりやすい。 確かに上にあった Objective C の Microsoft 版だという たとえは的を射ていると思う。
464 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 21:16:36 ] 漏れにスキルさえあれば、JVM や Squeek に CLI ラッパをかぶせて、GCC の C++/CLI 実装を作ってみるのになぁ
465 名前:デフォルトの名無しさん [2007/09/07(金) 18:04:21 ] .NET2005 C++/CLIで開発しています。 設定情報をapp.comfigから読みだすために app.config(appはプログラム名へ後に変換)へ例えば <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="HOGE" value="ほげほげ" /> </appSettings> </configuration> と書いて、C++/CLIのコード(フォームアプリ)からは、 MessageBox::Show(System::Configuration::ConfigurationSettings::AppSettings[ "HOGEHOGE"]); MessageBox::Show(System::Configuration::ConfigurationManager::AppSettings[ "HOGEHOGE"]); と呼び出して表示しているのですが、OSがXP(SP2)だとうまくいき、 Win2000(SP4)だと表示が空文字になってしまいます。 MSDNにはWin2000(SP4)もサポートしているように書いてありますし、 vcregist_x86.exeやdotnetfx.exeも実行してあるのですが。。。 このあたりの情報(こうすれば動く、実はサポート外など)を お持ちの方、いましたら教えていただけませんか。 ネットで散々探しましたが、意外とこの話題少ないんです。 よろしくお願い板します。
466 名前:465です [2007/09/07(金) 18:08:54 ] ごめんなさい。 <add key="HOGE" value="ほげほげ" /> は <add key="HOGEHOGE" value="ほげほげ" /> の間違いです。
467 名前:デフォルトの名無しさん [2007/09/08(土) 09:39:16 ] レベル高すぎ
468 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 12:14:40 ] >>465 うちの環境だと正常に読めてる。Vertual PCでWin2k(SP4)。 xx.exe.configの名前はあってる?
469 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 02:02:27 ] >>468 >xx.exe.configの名前はあってる? それ、ビンゴです! C#やVBはビルド時に自動でファイル名つけてくれるのに。。。
470 名前:デフォルトの名無しさん [2007/09/22(土) 02:10:50 ] 過疎ってんなー やっぱりC++/CLIは 流行らないってことでおk?
471 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 03:07:29 ] だってマネージ・アンマネージの橋渡し専用言語だもん
472 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:36:17 ] GDI+死ぬほどのろいんで、ペイントルーチンをC++/CLIでGDI使って 組めばいいんじゃね テキスト描画すんのもGDIのが楽なような
473 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 11:09:00 ] >>472 VistaでDDBの速度的有利さは事実上消滅したけどな
474 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 12:22:14 ] DirectDraw(笑)
475 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 13:28:37 ] >>473 .NETがのろくて誰も使ってくれないから全員平等にのろくしたって感じだな
476 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 15:55:56 ] 馬鹿?
477 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 20:13:30 ] .NETは最初から馬鹿だよ。
478 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 20:14:39 ] >>475 Direct3DとWPFは仲間はずれ?
479 名前:デフォルトの名無しさん [2007/09/23(日) 04:10:23 ] >>471 まぁそうなんだろうけど、そういう言語が CLI 上にちゃんと 用意されているところが Java VM とは違うところだよな。 といってドトネトを擁護してみる。 いや、漏れは好きだよ C++/CLI。というかこれがないと困る。 研究用のシミュレータをC++で boost とかのライブラリ使って 書いてるけど、フロントエンドの GUI が Windows Forms で 組めるのは楽だよ。
480 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 07:26:58 ] それって逆に選択肢がないんじゃ… > シミュ&Win Forms
481 名前:デフォルトの名無しさん [2007/09/23(日) 08:18:37 ] >>480 そうともいう。 シミュレータ自体はライブラリ化していて、コマンドライン版は Linuxクラスタで動かしているんだけど、同じライブラリを リンクしてWindowsで動くGUI版を作れるというのはかなり便利。 C# と C++/CLI と両方使って思うんだけど、 Windows Form デザイナ って両者の言語でかなり安定感ちがわないか? C++/CLI だとちょっとでも自動生成されたコードいじると もうデザイナが発狂してしまう感じ。どの程度いじってもOKなのか 基準がよくわからない。C# のほうも基準がわからないという点では 同じなんだけど、結構いじっても Windows Form デザイナが ちゃんと認識してくれる気がする。気がするだけか?
482 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 12:28:25 ] C#のほうが解析しやすい言語だから
483 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 12:57:21 ] 解析なんてしてないだろw
484 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 13:05:02 ] >>483
485 名前:デフォルトの名無しさん [2007/09/25(火) 14:00:50 ] プリコンパイル済みヘッダーは C++/CLIで使えるのでしょうか?
486 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 17:51:40 ] 使える
487 名前:デフォルトの名無しさん [2007/09/26(水) 23:29:57 ] プロパチー見ろ
488 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:24:24 ] C++で今まで書いてきて GUIをもっとバリバリやりたくなってきたんですが かといってMFCは嫌い。 C#は書き直すのがめんどいし そんな漏れはC++/CLIがいい?
489 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 06:58:21 ] >>488 Win32
490 名前:デフォルトの名無しさん [2007/09/27(木) 09:23:42 ] ネイティブで書かれた関数(数値計算のエンジン)を別のスレッドで動かして、 結果をグラフィカルに表示するなんてことができます? ネイティブの_begin_thread 関数を呼び出す必要が有りますか? それともドトネトのなにかを呼び出すべきなんでしょうか?
491 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 09:42:20 ] >>490 どちらでも可能だが、 マネージドのスレッドを使ったほうが取り扱いが楽だと思う。
492 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 09:44:11 ] ネイティブを混ぜるマネージドアプリに何の意味がある。
493 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 09:47:20 ] >>492 C++/CLIスレでそれを言うなよ。/safeにどの程度の意味があるんだ?
494 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:09:31 ] >>492 ネイティブってどういう意味で使ってるの?
495 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:10:25 ] >>494 マネージドアプリをアンマネージドアプリにする混ぜ物。
496 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 12:42:32 ] むしろ逆だろ pureでやりたいなら C# で十分じゃん C++/CLI はそれだけじゃ物足りない人向けだろ
497 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 12:50:00 ] WTLを忘れるな
498 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 15:31:12 ] 数値演算をC++にさせて「何の意味がある」って言われるなら、 <funcional>すら駄目ってことになるが…
499 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 15:41:05 ] C#って初期バージョンで完成形だったのに だんだん拡張されてキモクなってるよな。
500 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 16:21:17 ] 全然
501 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:14:05 ] C#程度でキモいっつーんならC++とか使えないだろ
502 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:18:33 ] >>488 楽したいならC# + C++/CLIとかWPFとか 厳しい道を行きたいなら DirectX Graphics
503 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:00:15 ] おまえ、なんかものすごい勘違いしてない?
504 名前:デフォルトの名無しさん [2007/09/28(金) 01:23:51 ] C#にある delegate の ThreadInvoke メソッドを使った ○ちスレッド処理って、同様のことは C++/CLI では できないのかな。そもそも delegate がないから無理か。
505 名前:デフォルトの名無しさん [2007/09/28(金) 01:25:43 ] ThreadInvoke じゃなかった、BeginInvoke だった。 それに、そもそも C++/CLI にも delegate はあるんだった。
506 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 01:44:23 ] なにを言っているんだ
507 名前:デフォルトの名無しさん [2007/09/28(金) 06:58:38 ] C++/CLIではコンテナクラスライブラリとして STL.NET なるものを使うべきなんですか?それとも .NET Framework にはほかにも(言語独立の)コンテナが用意されていて そちらを使うべきなんですか?
508 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 09:23:21 ] 好きな方を使えばいい C# で慣れてるなら .net の Collections を使えばいいし、違和感がないなら STL.NET で いい。格納するものがネイティブだったら、既存のライブラリでもいいだろうし
509 名前:デフォルトの名無しさん [2007/09/28(金) 21:18:24 ] C++/CLI では単純型の配列って初期化されるんでしょうか? あと、配列の持つ Clone メソッドっていわゆる浅いコピー しか作ってくれないんですよね?ハンドルを深くたどって 完全にコピーを作ってくれるようなメソッドはありませんか? 自分でディープコピーしないとだめ?
510 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 21:32:10 ] 一般論だけどDeepCopyの仕様はクラス作成者にしか決められないんじゃないかな。
511 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:18:26 ] >509 Primitive型と値型は初期化される
512 名前:デフォルトの名無しさん [2007/09/29(土) 09:20:50 ] ディープコピーのためのインターフェイスを実装していれば 自動的にディープコピーまでやってくれるなんてことは ないんですかね。Microsoft では「簡易コピー」と「詳細コピー」 って呼んでるみたいですが、たとえば System::Array の Clone は簡易コピーですよね?
513 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 15:17:17 ] 自動でディープコピーやったら、循環参照のときコピー終わらなくなっちゃうよ。 ArrayのCloneは簡易コピーだけど、 一般的にICloneableインターフェース実装が 簡易コピーでないといけないということはない。 Cloneメソッドが簡易と詳細どちらのコピーをするかは、 実装者に任せるというのが一般的じゃない? だから、既存のコピー実装が気に入らなければ、 外部で独自のコピー方法を定義するしかないよ。
514 名前:デフォルトの名無しさん [2007/09/30(日) 16:50:24 ] CEDEC2007で 3ds maxは、C++/CLI使ってるようなこと言ってた。 プラグインもC++/CLIだし
515 名前:デフォルトの名無しさん [2007/09/30(日) 17:49:50 ] コンテナはC++CLIならSTL+Boostがいいのかな?
516 名前:デフォルトの名無しさん [2007/09/30(日) 18:17:40 ] >>515 ネイティブなクラスのインスタンスを格納するか マネージドなクラスのインスタンスへのハンドルを格納するかに よるんじゃね?boost::shared_ptr で格納するなら また話は発散する。
517 名前:デフォルトの名無しさん [2007/09/30(日) 19:02:28 ] スタティックライブラリを利用しようとしたところ (libcmtd.lib等とぶつかる系も回避しました) DotNetTest2003_00 error LNK2020: 未解決のトークン (0A000013) exception.__ctor DotNetTest2003_00 error LNK2020: 未解決のトークン (0A000030) exception.__dtor DotNetTest2003_00 fatal error LNK1120: 外部参照 2 が未解決です。 って出ました。 これは何が原因なのでしょうか?
518 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:52:08 ] >517 それは C++/CLI なの?
519 名前:デフォルトの名無しさん [2007/09/30(日) 23:09:35 ] プロジェクトは、C++/CLIです。 stdafx.hに #include <windows.h> #pragma comment(lib, "user32.lib") 書いてます ライブラリのほうは、C++/CLIじゃありません
520 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:37:16 ] >>519 ライブラリは /MDでコンパイルしてます?
521 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:42:45 ] 〜〜〜〜 / ヽ / >~~~~~~~~/ | ∠ \ / | | √ ⌒ <⌒ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (6 ≡ \| | やる前から負けることを ≡ ┌ __「| < \ \_( | | 考えるバカがいるかコノヤロー! \ ー | | \___| \_____________
522 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 23:44:19 ] 誤爆スンマソ
523 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:13:11 ] ネイティブコード吐かないんなら、C++使う意味無くない?
524 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:15:21 ] 無くない
525 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 13:00:02 ] ドトネトにはイミナイ
526 名前:デフォルトの名無しさん [2007/10/01(月) 17:40:21 ] >>520 おおおお いけました。 ありがとうございます。 ありがとうございます。 ありがとうございます。
527 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:04:15 ] 修行するぞ。 修行するぞ。 修行するぞ。
528 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:17:04 ] C++なのに遅いとか泣けるよな・・・ いや、C++/CLIをC++に含めるのは問題だと、ISOにバッサリ斬られたけど。
529 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:22:30 ] ISOがタダシイ
530 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 19:11:49 ] C※にでもすればいいのに。
531 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:59:18 ] 左を向けば変態的な/CLI 右を向けば変態的な0x 振り返っても変態的なC++
532 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:01:04 ] >531 ウホッ! 最高だな(w
533 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:13:50 ] 変態の俺にピッタリだ。
534 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:31:05 ] おまいら、まだまだ子供だな。俺を満足させたかったら、MixedType を持ってこい CLI もネイティブも多重継承してやるぜ
535 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:49:09 ] MixedType ってなに? boost::any とか? boost::optional とか?
536 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 18:13:20 ] 混合型 ネイティブクラスがマネージ型のメンバを持ったり、 マネージクラスがネイティブクラスから派生したりするなど。
537 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 18:26:01 ] そうだ、M$がマネージドをネイティブに書き換えれば準備完了!
538 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 20:17:09 ] C++/CLI でも当然純粋仮想関数って認められているはずだよね? ネイティブのライブラリの中で、純粋仮想関数を持つ クラス X があるんだけど、そのライブラリを /clr なアプリから リンクすると X のインスタンスなんて一切生成しようと していないにもかかわらずリンカに怒られるんだよ。 なんでだろう。わかる人いる?
539 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 20:30:52 ] 人に聞くときゃ、エラーを出せよ
540 名前:538 mailto:sage [2007/10/03(水) 20:47:24 ] ごめん、C++/CLI とか全然関係なかった。 よく考えたらコンストラクタの中で巡り巡って 純粋仮想関数が呼び出されているところがあった。 コンストラクタの中で仮想関数を呼ぶようなコードは 実際には仮想関数テーブルを見に行くようなバイナリが 生成されるわけじゃなくて静的に解決された _thiscall を呼びに行くバイナリが生成されるわけだけど、 純粋仮想関数だとそれは定義されてないから リンカに怒られているだけだった。
541 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:05:05 ] そういうのは Init みたいな初期化関数を使うってのが C++ の定石だけど、 ちょっとカッコ悪いよね。
542 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:59:17 ] うんかっこわるい Initialize()でないと
543 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 13:18:06 ] C++/CLIって検索に引っ掛けにくいキーワードなので、 もっと、こう、いい名前を考えてやらないか? 記号を含まずに検索エンジンでインデックス化しやすく、 かつ独創的で他の言語とは差別化できそうな名前。 しかも人間にとっても発音しやすい名前。 俺は卑猥な名前しか思いつかない。
544 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 14:28:39 ] C++xCLI とか CLI++ とか?
545 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 15:08:34 ] C#ってのはどうだろ?
546 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 15:19:30 ] >545 巣に(・∀・)カエレ!!
547 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 15:37:04 ] VBってのはどうだろ?