1 :
デフォルトの名無しさん :
02/02/24 02:47 C#関連のスレは山ほどあるが managedC++のスレが無いじゃないか。 折角.NETに生き残ったC++、みんなで語ろうぜ。
2 :
デフォルトの名無しさん :02/02/24 02:47
おお、 語ろう
>1=>2
1-2=3
名スレの予感
1-2+3=4
7 :
デフォルトの名無しさん :02/02/24 02:50
1==2==3
1^2^3^4^5^6=7
v(^・^)v(^・^)v(^・^)v(^・^)v=1*3
10 :
デフォルトの名無しさん :02/02/24 02:57
if(1から9まで同一人物だったら) { System.out.println("○○○"); } の「1から9まで同一人物だったら」 の部分って 1==2&&1==3&&.... って書くのは長ったらしいので 何かいい方法ありますか?
11 :
デフォルトの名無しさん :02/02/24 02:59
ポインタ、template、が生き残っただけでも凄い嬉しい。 と言う事はSTLもとおると言う事か・・・? 素晴らしい!!
12 :
デフォルトの名無しさん :02/02/24 03:17
結局、 class CA{ public: template<typename T>void func(T t); }; template<typename T>void CA::func(T t){.......} がエラーになるのは解決されたのだろうか??
13 :
デフォルトの名無しさん :02/02/24 03:21
をを・・・解決されているみたいですな。 今試したら、ちゃんと動きましたよ。
14 :
デフォルトの名無しさん :02/02/24 04:41
何てこった・・・.NET SDKには<iostream.h>が入ってない。 さようなら、cout・・・・
15 :
デフォルトの名無しさん :02/02/24 04:49
マナゲドって何よ?
>>14 普通のSDKと.NETのSDKは
C++の扱いは違うの?
.NETのC++はあくまでmanagedコードを
書くためのものなのかな?
17 :
デフォルトの名無しさん :02/02/24 04:54
man=男 aged=ageの過去形
18 :
デフォルトの名無しさん :02/02/24 04:54
>15 ネタだよな・・・?
19 :
デフォルトの名無しさん :02/02/24 05:03
>>15 マグドナルドの経営する中華風ファーストフード店の名称です。
どうせなら「相談室」スレにしたら良かったのに。
21 :
デフォルトの名無しさん :02/02/24 09:13
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> managed C++
22 :
デフォルトの名無しさん :02/02/24 09:41
>>14 本当だ......。よくみるとVS.NETのほうにしかiostrem.hはないですね。
まあ私はVS.NET買うつもりなので関係ないけど。
ってか、iostream.hなんていいかげん捨てろよ。 それにマトモなSTL入れておけば問題ないだろ。
24 :
デフォルトの名無しさん :02/02/24 09:46
>iostream.hなんていいかげん捨てろよ どゆいみ?
25 :
デフォルトの名無しさん :02/02/24 09:47
iostream
ファイル名から .h が取り除かれたのが今の標準ってこと知らんのか?
27 :
デフォルトの名無しさん :02/02/24 10:47
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>10 !(a^b || a^c || ... )
がベストに近いかな?
少なくとも&&使うよりは良いと思われ。
よく考えてみれば、自分の環境はいきなりVS.NETベータ2をいれたので 純粋に.net SDKを入れただけで本当にiostream.hがインストール されるかどうかはわからなかったです。 ちなみにC:\Program Files\Microsoft.NET\FrameworkSDK\includeには なかったです.......。
>>10 適当なコンテナに突っ込んでfor_eachで比較
>>30 for_each()じゃなくて、find_if()だろ
32 :
デフォルトの名無しさん :02/02/24 18:46
__gc class CA{.....}; とすれば、 mann(){ CA* pca=new CA; } delete pca;を書かなくても、 ガベージコレクションがオブジェクトを壊してくれる。 便利になったなぁ・・・。
33 :
デフォルトの名無しさん :02/02/24 18:56
>>32 mann()ってなに?ネタだよな・・・?
34 :
デフォルトの名無しさん :02/02/24 22:10
>>16 .NETでも今までと同じC++が書けます。
managedコードを吐かせたくなければ、コマンドのcl/CLR
からCLRを外して、ソースからmanagedC++固有の書式を除けば
可能です。多分。
35 :
ぎゃあああああ :02/02/24 22:41
managed C++でCOMオブジェクトは作れないの?
>>35 AttributeとATLで作った方が楽だぞ。
37 :
ぎゃあああああ :02/02/24 23:14
>>36 .NET frameworkを使えるATLの環境がほしい…。
MFCは今後まともなサポートは期待 出来ないんだろうなぁ。
39 :
デフォルトの名無しさん :02/02/25 00:37
>>38 移植です。それしかありません。
40 :
デフォルトの名無しさん :02/02/26 00:44
アセンブリへのパスが通らん。何故だ? ベータ2ってインストール時にパスを通すとか言ってなかったか?
41 :
デフォルトの名無しさん :02/02/26 00:55
いいや、ここはダレも通さん。
42 :
デフォルトの名無しさん :02/02/26 01:23
43 :
デフォルトの名無しさん :02/02/26 01:36
ディフェンスの宮本にパスカットされた。
アセンブリは「パス」は関係ないっす。アプリと同じディレクトリにおいてみるべし。
45 :
デフォルトの名無しさん :02/02/26 20:41
>44 そうなんですか? fatal error C1107: アセンブリ 'System.WinForms.dll' がみつかりませ んでした : /AI または LIBPATH 環境変数を使用してアセンブリ検索パスを指定してくだ さい。 と、出るんですが。'System.WinForms.dll' ってassemblyと言うフォルダの中に あるんですけど・・・。
根性が足りん
47 :
デフォルトの名無しさん :02/02/26 21:15
根性かよ!? ・・・頑張ってみるよ
48 :
デフォルトの名無しさん :02/02/26 21:17
>>45 'System.WinForms.dll' ということは、相当古いバージョンだね。
>>45 System.WinForms.dllはBeta2でSystem.Windows.Forms.dllに変わりました。
50 :
デフォルトの名無しさん :02/02/26 21:45
おお、成る程。 そのDLLはありました。assemblyフォルダじゃなくて.NETの方に。 Microsoft.Win32.Interop.dllも名前が変わっているのですか??
>>50 > Microsoft.Win32.Interop.dll
そのDLLはβ2以降なくなったよん。
52 :
デフォルトの名無しさん :02/02/26 22:22
無くなった・・・? もう根性でもどうにもできないな。
53 :
デフォルトの名無しさん :02/02/26 22:47
お前の環境はどうなんてっだと、小一時間問詰めたい。
54 :
デフォルトの名無しさん :02/02/26 22:51
OSのクリーンインストールからだな。
55 :
デフォルトの名無しさん :02/02/26 22:51
.NETベータ2、VC6.0、JAVA2しか入っていません。
うちもVS.NETβ2とVS6.0は入ってるけど別に問題無いよ。 てことはJAVAかな?
57 :
デフォルトの名無しさん :02/02/26 23:01
んなわけない。 旧バージョンをアンインストールせずに新しいやつ入れたんでしょ。
58 :
デフォルトの名無しさん :02/02/26 23:08
お前本当に古いバージョンを消したのかと、トイレに連れ込んでボコボコにしながら問詰めたい。
あ、要るDLLが無いんじゃなくて、要らないDLLが在るのか(藁 スマソ
60 :
デフォルトの名無しさん :02/02/26 23:11
アンインストはかけましたよ? 但し、インストールとアンインストールを計6回ぐらいしましたが・・・
61 :
デフォルトの名無しさん :02/02/26 23:36
その環境は捨てろ。 OSから再インストールしやがれ。
62 :
デフォルトの名無しさん :02/02/26 23:44
β2でFormを使ったHello Wolrdをどなたかお示しください。 日本語ページでは見付かりません。 (managed C++の情報って何処にあるんだ? )
こんなんでどうでしょう?RTMでしか試してませんが。 #using <mscorlib.dll> #using <System.dll> #using <System.Windows.Forms.dll> using namespace System; using namespace System::Windows::Forms; __gc public class Form1 : public Form { protected: Label *label1; public: Form1() { label1 = new Label(); label1->Text = S"Hello World!"; this->Controls->Add(label1); }; }; int main() { Application::Run(new Form1()); } % cl /clr form1.cpp
64 :
デフォルトの名無しさん :02/02/27 00:09
をを・・・出来ましたよ。 ありがとうございます!! (やっと、GUIの門の前に立った♪)
おおっ、いつの間にこんなスレが! 昔、managed C++とC#の比較のセミナー見たことあるけど、 managed C++は味があっていい感じ。
C#とmanaged C++ってどう違うんですか?
67 :
デフォルトの名無しさん :02/02/27 01:11
文法が違います。 JAVAとC++と同じぐらい違います。
>>63 を見る限りは文法がそんなに違うとも思えないんですが…
69 :
デフォルトの名無しさん :02/02/27 01:22
VCをメインに使ってきた私にはC#もJAVAもほとんど一緒に見えるのです。 だからmanaged C++は私には絶好の言語なのです。ガベコレがあるなんて 最高としか思えない。
70 :
デフォルトの名無しさん :02/02/27 01:50
ガベージコレクションってnewしたヤツだけ消してくれるの? GetDCしてReleaseDCしなくてもよくなるとかってことは?
71 :
デフォルトの名無しさん :02/02/27 02:00
誰かmanaged C++の分かり易い解説ページ知らない? 本とか全然ないしさ、みんなどうやって勉強してるの?
>>70 ない。GC対象になるのは__gcなクラスだけ。
>>71 RTMのドキュメント。
73 :
デフォルトの名無しさん :02/02/27 18:57
managed C++ってSTL使えるの? 使えるなら、managed C++に乗り換えるけど。
C#とくらべて少しは速いの?>>実行速度
75 :
デフォルトの名無しさん :02/02/27 21:25
76 :
デフォルトの名無しさん :02/02/27 21:28
managedC++ってネィティブコンパイラ?
78 :
デフォルトの名無しさん :02/02/28 17:33
C#とコレが使えれば、とりあえず 10年は喰えそうな気がするのだが、 俺の気のせいだろうか・・・・?
正解。
>>77 っていうか、cl.exeはネイティブコードもILも両方吐けます。
81 :
デフォルトの名無しさん :02/02/28 20:50
クライアント領域が出ねぇーーーー!! 何故だぁ!!
82 :
デフォルトの名無しさん :02/02/28 20:59
>>80 ネイティブっつーても、
.NET frameworkは必要。
誤解する人も出るので
言い方改めた方がよい。
83 :
デフォルトの名無しさん :02/02/28 21:36
>>82 それを言ったら、いまのプログラムも Win32 API は必要だし。(GDI32.DLL とかさ)
84 :
デフォルトの名無しさん :02/02/28 21:41
ATLってどうなるの?
86 :
デフォルトの名無しさん :02/02/28 22:22
COMの時代も終わりか・・・
>>85 .net でもヘッダファイルには残ってるが。従来の WTL の機能も一部取り込んで、
発展はしてる。(メインストリームではないと思うが)
>>82 はぁ。誤解しているのはあんたです。cl.exeはx86ネイティブ吐けます。ILを吐くのは/clrのときだけ。
>>85-87 ATL7使ってみなって。ある意味C++/ATLユーザーは.NET Frameworkなんかいらないってことがわかるから。
ATLはまだまだメインストリーム。
89 :
デフォルトの名無しさん :02/03/01 11:22
age
90 :
デフォルトの名無しさん :02/03/01 11:49
マネジドやるならC#かJavaでええやん。
C++でもええやん
92 :
デフォルトの名無しさん :02/03/01 16:22
>88 82じゃないけどおれも誤解してたかも。 managed C++はCLR(.NET)を使うために作られたものだと思ってたけど、 CLRと全く関係無しに managed C++を使うものなの?
>>92 managed extension for C++はC++の構文で、CLR向けのコードを書くための拡張機能。
Visual C++ .NETは、通常のC++以外に、managed extension*も*サポートするC++コンパイラ。
>CLRと全く関係無しに managed C++を使うものなの?
CLRと関係なしに「C++を」使うことができる。
CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
OK?
>93 >>CLRと全く関係無しに managed C++を使うものなの? >CLRと関係なしに「C++を」使うことができる。 >CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。 CLRを使わずに、「managed extensionをC++とともに」使うことはありえないですよね? いや、83さんがx86ネイティブを非/clr時に吐けると書いているけど、 ここはmanaged C++スレなので、managedをCLR非利用時に使うことが ありえるのか?と疑問に感じましたので。
つーかな、ファイル名そのものがある種のポインタなわけよ。 だから、94は、ポインタとポインタのポインタの説明って事さ。
誤爆スマソ。
>>94 なるほど。僕としては、
「managedをCLR非利用時に使うことがありえるのか?」
っていう文章が文章として成り立っていない(managedっていう言葉はCLRと同義語だから)ので、??と思ったのでした。
あ、ちなみに83==93==thisってことで。
ちがーう。88==93==97。
99 :
デフォルトの名無しさん :02/03/02 00:38
templateが使えて、GCもあればC#いらん。 C++プログラマーの長年の夢は叶えられた。
今だ100ゲット!
>99 ならD使え
しかし101は無視された! しかし101は無視された! しかし101は無視された!
D言語ってDigital Marsのところのヤツか? 確かにC++に最も近いだろうが、「何処でも動く」 わけじゃないからなぁ。
>「何処でも動く」 managedとか言ってる時点で駄目だろ
105 :
デフォルトの名無しさん :02/03/02 01:47
んなこたぁない。実際に「何処でも動く」ようにしてあるんだから。 言葉の定義はどうでもよくて実際が大事。
managedが動く「何処でも」って何処のこと?
107 :
デフォルトの名無しさん :02/03/02 01:50
>103-105 微妙なずれを感知。
どこでも=MSか地味案が気にかけてくれた所&ユーザがCLR作っちゃうくらい やるきのあるコミュニティのある所。
>>99 君は、何屋さんかな?
C++プログラマは要らないと思ってるんだよ。
今まで、ずっとJavaにコンプレックス持ってて、
「でもこっちにはテンプレートがあるんだい」とか言って田?
110 :
デフォルトの名無しさん :02/03/02 20:51
C++プログラマは要らないと・・・ ガ━━(゚Д゚;)━━ン!
>109-110 明らかなズレを感知。
112 :
デフォルトの名無しさん :02/03/02 21:24
>109 その通りです。 JAVAのバカヤロー!!
ごめん。 誤:C++プログラマは要らないと思ってるんだよ。 正:C++プログラマはGCなんか要らないと思ってるんだよ。何にしても、煽り入ってたね。ごめーん。
許さーん。
115 :
デフォルトの名無しさん :02/03/02 22:43
確かにC++にガベージコレクションはいらないかも。 ろくにメモリの管理もできないような厨房大量発生の予感。
いらないというか付けて欲しくないね。 もし付いたらパフォーマンス最優先なOOPLがなくなってしまう。
auto_ptrで十分…
BoehmGCだっけ?あれはどーなの?
Bjarne Stroustrup > >>The best garbage collecting language that I know of is C++ with a garbage collector.
120 :
デフォルトの名無しさん :02/03/02 22:53
The best garbage collecting language that I know of is Ruby!
>>116 クラス単位で選択可能にすれば良いだけだと思うが。
>121 なにがいいんだ? それでGCが走るタイミングを制御できんのか?
GC なら Lisp に一日の長あり。
124 :
デフォルトの名無しさん :02/03/03 06:23
>>119 おお・・・Stroustrupがそんなことを言っていたなんて(福音)
その下のは何?宗教の勧誘か??
125 :
デフォルトの名無しさん :02/03/03 09:25
>>119 「GC付きのもっともよい言語は、私の知る限り、GC付きのC++です」
意味わかりません。これマネジドのこと?そんなこと教祖が言ったの?
信じらんない。ソース希望。
126 :
デフォルトの名無しさん :02/03/03 09:34
そうだよねー、 GC の制御を細かく出来ないと 速度がクリティカルな環境じゃ使えない。 なんとかならないのかな? .NET の GC は。
>>126 クリティカルな部分は自分で管理するとかして、
gcの起動を抑制すればいいんじゃない?
StroustrupはC++のことしかいってないなぁ(w >Pablo Picasso >Computers are useless. They can only give you answers. が(・∀・)カコイイ!!
131 :
デフォルトの名無しさん :02/03/04 01:16
マジな話、GCの制御できないのか?(文法レベルで) VS.NETにはオプションでありそうな気がするんだが。
なにを制御したいのかな?呼びたいときに呼ぶってなら、System.GCクラスでできるけど。 あとGCが起動するスレッドをどれにするかとか、制御できるよ。 でも、VS.NETのオプションとかいってるところを見ると、アンタGCわかってないね。 開発環境と関係あるわけがない。
ベタな質問でスマソ。 managed C++ソースコードの標準的な拡張子って.cppのままなんですか? managed G++が出ないかなあ…(CLRが先か)
>133 そう。
thx 構文的にはC++にCLRを使うための機能を追加しただけだから.cppでいいのか。
機能追加なら、C++++で.cp4か?
++c++ではどうか。
138 :
デフォルトの名無しさん :02/03/05 20:28
++++++++c++++++++
それじゃBrainF**kだよ(w
140 :
デフォルトの名無しさん :02/03/05 20:55
Visual BrainF**k
141 :
デフォルトの名無しさん :02/03/06 23:49
age
142 :
デフォルトの名無しさん :02/03/07 00:00
類似スレが立ったようだが、いきなり荒らされてるな。
143 :
デフォルトの名無しさん :02/03/07 00:47
c=1; ++c++; は c==3ですか?
144 :
デフォルトの名無しさん :02/03/11 23:10
145 :
デフォルトの名無しさん :02/03/16 16:42
全てがオブジェクトである
int c = 1, x; x = ++c++; cout << "x = " << x << " : c = " << c <<endl; // x = 2 : c = 3 かな
で、みんな本気で手を出すつもりかい? まなげどC++
unmanagedコードが気軽に呼べる環境として注目してる。 .NET的なクラス/インスタンス管理を自動でやってもらえるのは嬉しい。 MC++のコードでmanagedな部分がメインになることは少ないと思うなあ・・
149 :
デフォルトの名無しさん :02/03/16 23:04
現在、β2使ってるけど 「古い形式で書かれていますがビルドしますか?」 みたいな内容のダイアログが出てくる時点で プチ・リストラ気分>VC++ユーザーの俺
150 :
デフォルトの名無しさん :02/03/21 21:18
明日本番age
151 :
デフォルトの名無しさん :02/03/21 21:19
managed C++ってRubyコンパイラ並みに無意味なような。
C++ >>>>>>>>>>>>>>>>>>>>>>>>>> Ruby == managed C++ ですか?
154 :
デフォルトの名無しさん :02/03/22 13:13
入手!!
155 :
デフォルトの名無しさん :02/03/22 13:36
>>153 ちょい違う。
if( (C++ * 10) > ( ( Ruby * 8 ) || ( Managed C++ << 3 ) ) )
printf( "MS イッテヨシ" );
あ、条件文間違えた。
C++ マネージ拡張
158 :
デフォルトの名無しさん :02/03/23 14:31
VS.NET発売age
159 :
とあるフリーソフトウェア作家 :02/03/23 16:00
しつもーん。 managed C++ のランタイムを配布するときって、 何と何を一緒に配布すりゃいいんでしょ。はたまたそのサイズはいかほど? あるいは、MSのどこにリンク張っとけばいいんでしょ。 .NET 買うかどうか悩んでるとこなんですが。
160 :
デフォルトの名無しさん :02/03/24 02:07
このスレタイトルの managedてなんですか?
161 :
デフォルトの名無しさん :02/03/24 02:11
>>160 .NET上で動くC++か
今までのC++かってことじゃに
managedC++なコードは.NET上でないと動かないよん
>>159 dotnetfx.exe(21.6MB)
で、デケェ・・・。 そんなもん、フリーソフトウェアにはつけることはできん。 やっぱふつーにC++使いますわ。 会社で作るときに検討しよう・・・・。
164 :
デフォルトの名無しさん :02/03/24 11:27
>>163 どうせすぐにサービスパックに含まれるって。
165 :
デフォルトの名無しさん :02/03/24 11:33
>>162 それさぁ、Win95で動かすことはできないんかな?
Win95 で CLR / .net しなきゃならないんだけど。
166 :
デフォルトの名無しさん :02/03/28 17:00
> Win95 で CLR / .net しなきゃならないんだけど。 何それ? Win95はもうMicrosoftがサポート止めてるのにいまさら出るわけないと思われ
167 :
デフォルトの名無しさん :02/04/07 19:23
168 :
デフォルトの名無しさん :02/04/07 19:47
何てことだ・・・何てことだ!!
169 :
デフォルトの名無しさん :02/04/08 02:06
>>167 ああああああああぁぁぁぁぁぁ
優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは
気のせいじゃなかったのか・・・・
170 :
デフォルトの名無しさん :02/04/08 08:02
"jokes" ?
171 :
C++歌劇派 :02/04/08 08:32
managed C++なんてC++じゃないだろ。 だたらJavaやれ。 >優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは それは君がパーなだけ。それに、最近は、じじいのCプログラマばっかりで、 優秀なのもいない。
マジレスはあれでしょう。
おいおい、この反応は全部ネタだよな?
174 :
デフォルトの名無しさん :02/04/08 23:12
>>167 マジな話C++は終わったのか?
ネタだと信じたい。
もし、ビル・ゲイツが10年ぐらいたってC#は実はジョークでしたとか言ったら泣くよ・・・。
誰もまなげどC++やってないらしい罠
よっぽど理由がない限りやらないよ
いや、MC++まんせー!ってひとがMSのnewsにいたよ。
冫─' ~  ̄´^-、 / 丶 / ノ、 / /ヽ丿彡彡彡彡彡ヽヽ | 丿 ミ | 彡 ____ ____ ミ/ ゝ_//| |⌒| |ヽゞ |tゝ \__/_ \__/ | | ________________ ヽノ /\_/\ |ノ / ゝ /ヽ───‐ヽ / / C#は実はジョークでした /|ヽ ヽ──' / < 次はC♭出すので買ってね / | \  ̄ / \ / ヽ ‐-  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
まなげどマンセーage
180 :
デフォルトの名無しさん :02/04/10 11:36
VS6でmanagedC++やってる人いる? どうもコマンドラインからだとコンパイル成功するのに エディタからだとdllがらみのエラーが出る。
↑リンクエラーのことね
>>176 C++をmanagedでやる理由もなけりゃmanagedをC++でやる理由も無いからな。
つかC++はキーワードが汚すぎ。
183 :
デフォルトの名無しさん :02/04/10 17:56
C++から.NETを使いたい。ってそんなにマイナーなニーズ? MFCだってあとは現状維持程度で、新しいことがしたければ.NETへ逝け!でしょ? おれは今のところWindowsは開発対象でないので様子見。
自己レス。 E:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msobj10.dll を上の.netSDKのDLLで上書きしたらLNK2023は出なくなりました! という訳でVS6、.netSDK、PlathomeSDKの三つを上手く組み合わせれば まだまだ開発はできそうです。
をいをい、%LIB%直せよ。。
187 :
デフォルトの名無しさん :02/04/10 21:20
VC.NETはlokiをコンパイルできるのですか? というかtemplateの制限はどれくらい解けてます?
VC.NETはloliをコンパイルできるのですか?
>>186 %LIB%にパスを設定したけどダメなんですよ。なんでですかね?
191 :
デフォルトの名無しさん :02/04/22 01:27
C#ってVBの関数使えるらしいけど、managed C++は使えるの?
192 :
デフォルトの名無しさん :02/04/24 21:04
.NETの関数、という意味ならどの言語だろうが同じなのでは。
193 :
デフォルトの名無しさん :02/05/06 03:38
>>192 ほう・・・VBが使えるVC・・・訳わからんな。
>>192 だよな。
カーネル内の関数をVC++で作成したものだろうがVBで作成したものだろうが呼び出せるのと同じだよな。
カーネルじゃなくてDLLの方がいいか。
196 :
デフォルトの名無しさん :02/05/08 16:24
managed C++まじで分らん。誰か助けて!
200 :
デフォルトの名無しさん :02/05/08 17:54
managed C++でやれることは unsafeキーワード使うことで 全てC#でできるんですか?
unsageって前はマネージドコードってことになってなかったっけ?
多重継承とかは?
>>202 それはそもそもmanaged c++にはない
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcManagedExtensionsSpec_1.htm
・アクセスと制御。 マネージ コードとアンマネージ コードを混在できるため、 下位レベルのアンマネージ API などに直接アクセスできます。 Visual C++ とマネージ拡張を使用して、最大パフォーマンスの マネージ API を記述できます。 この辺りしかmanaged C++を使う理由はないな。 C#でも十分パフォーマンスをあげるコーディングの仕方が 用意されてるみたいだし。またx86ネイティブなコードを 書く機会もWindowws上じゃ減るんだろうなぁ。
>>206 MC++のメリットって、APIの構造体(またはクラス)を直接使えることぐらいじゃないかな。
APIの引数の型が単純だったら、C#とかでも難なく使えるし。
>>200 いいえ。C#は何でもできる言語ではありません。VB.NETでできるのにC#では
できないこともあります。MC++でならできるけど、C#やVB.NETではできない(または限定的)と
いうこともあります。
>>206 さんの言うことは一部真だと思いますが、C++ユーザーがC#に進んで混乱するくらいなら
MC++のほうがいいという選択もありえると思います。
>>207 ちなみにMC++のアンマネージコードの呼び出しはP/Invokeではありません。
P/Invokeよりも数十倍高速な仕組みを利用します。
>>209 ああ、そういやそんな話があったね。IJWって言うんだっけ?
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_PlatformInvocationServices.htm この辺りかな? とにかく高速なラッパーという用途だけはC++に残っているわけね。
212 :
デフォルトの名無しさん :02/05/08 19:31
unsage!
213 :
デフォルトの名無しさん :02/05/08 19:51
unsage!
214 :
デフォルトの名無しさん :02/05/09 18:37
既存のアプリケーションをマネージドに移行するのに注意する点なんてありますか?
関係ないですが、"managed C++"を日本語でGoogleから検索すると かなり上位に出てきます。
>>214 unmanagedコードを使わないようにがんばろう。
217 :
デフォルトの名無しさん :02/05/09 19:48
MFCとかATLをmanagedコードにすることは可能なの?
ムリ!
ナンデ!!
>>217 /clr つければできるよ。一緒に使えないオプションが多くて面倒だけど。
221 :
デフォルトの名無しさん :02/05/09 20:06
MC++ってごちゃごちゃしててまじでワケワカラン
とりあえず、新規のプロジェクトでMC++を使うことはないって言うのが よく分かったよ。
C++死滅スレでも作る?
MC++死滅スレなら。
225 :
デフォルトの名無しさん :02/05/10 00:06
>>224 VC++に関していえば、
過去の資産を引き継ぐという意味じゃ、
互換性を切り捨てたVBとは役割は全然違う。
10年はなくならない。
それにMC++は多分内部的にかなりC#とコードを
共有してるような気もするから、なくなることは
ないと思う。
あくまで希望的観測だけどどうでしょう?
>>225 MC++ -> MSIL -> C#
いいデコンパイラが出れば良い線行くかも。
MC++ -> MSILとC# -> MSILが似ていれば。
227 :
デフォルトの名無しさん :02/05/10 07:05
既存のアプリケーションをコンパイルして気が付いたけど、 FILETIME(WinBase.h)とSystem::Runtime::InteropServices::FILETIME みたいに名前がかぶっちゃうようか場合はどうしてる?
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_AmbiguousReferences.htm
230 :
デフォルトの名無しさん :02/05/10 08:43
ところで普通のアプリに ・使用するDLLを#pragma comment(lib, "XXX.lib")と指定する。 ・使用する.net frameworkのDLLをusing <XXX.dll>と指定する。 とこれだけでいいんでしょうか? しかもやってて思ったのは::MessageBox関数みたいに#define 切られてるのはどうしようもないような気がしてきました。 System::Windows::Forms::MessageBoxWはありませんとか言われて・・・
232 :
デフォルトの名無しさん :02/05/10 08:57
>>231 LINK : fatal error LNK1104: コンパイラは、ファイル 'kernel32.dll' を開くことができません
こうなっちゃうんですよ。
ところでこうやってコンパイルしたプログラムはmanagedってことに
なるんですかねぇ?もちろん全て__nogcという意味でいいのですが。
なんかMC++ってなんなのかよく分りません。
ildasm.exeでもちゃんと見れるからどうなってるのかさっぱりです。
233 :
デフォルトの名無しさん :02/05/10 09:04
>>231 #pragma comment(lib, "kernel32")
これでOKでした。拡張子は入りません。
234 :
デフォルトの名無しさん :02/05/10 09:08
それにしても盛り上がらないですねー。 既存のプログラムをC#で書き直すぐらいなら MC++を活用した方が全然いいと思うのですが、、、 これでDLLを作ればC#なんかからusing MyLib; なんて出来ていいと思うのですが。
>>234 ライブラリの移植用としては上の方で語られているね。
すくなくとも.NET用に開発されたC#がもっとも.NETとの親和性が高い。
>>235 個人的にはSun派とMS派のどっちでもないけど、
.netが過去との互換性を重視してる点がいいと思うんですよ。
MC++あっての.net(w
>>236 俺は心機一転派なのでC#のパイオニアを目指すw
そういう意味じゃg++が.net対応して保水
今あるWindowsの.net frameworkと同等のmonoを作るだけで 最低でも10年はかかるんだろうなぁ。opensource is always late なんてAlan Coxさんが言ってたけどまさにそんな感じか、、
241 :
デフォルトの名無しさん :02/05/10 11:59
MC++やろうぜ!
242 :
デフォルトの名無しさん :02/05/10 12:25
243 :
デフォルトの名無しさん :02/05/10 12:35
245 :
デフォルトの名無しさん :02/05/10 12:58
managed C++でILを吐かせることはできるんですか?
247 :
デフォルトの名無しさん :02/05/10 13:10
>>245 /CLRオプションを付けたときはデフォルトでmanagedコードに
なるみたいですが、managedコード=ILという訳ではないんですよね?
どうもGCとmanagedとILの関係が分らんのです。
x86バイナリにコンパイルされたC++managedコードにGCの機能が含まれて
いるっていう組み合わせもありえるんですよね?
248 :
デフォルトの名無しさん :02/05/10 13:12
PreJITと実行時ILコンパイルに質的に差がないのは理解してます。 C#に負けるな、あげ!
>>247 /clrでmanaged codeを吐くよ。managed codeって目に見えるものじゃなくて
概念的なものだと思う。ILであることもmanaged codeの一側面ではあるけど。
__gcのクラスはmanaged dataになる。managed dataとmanaged codeの違いは
意外にみんな理解していないようだ。
x86バイナリのlibをリンクしても、それがmanagedになるわけじゃないよ。
CLRはunmanaged codeを実行することもできるんだよね、これも意外に
知られていないが。
250 :
デフォルトの名無しさん :02/05/10 13:30
>>249 難しいです。なにかよいドキュメントがあればぜひお願いします。
251 :
デフォルトの名無しさん :02/05/10 14:10
ドキュメントから抜いてきました。 managed data 【マネージ データ】 共通言語ランタイムによって有効期間が管理されるオブジェクト。 共通言語ランタイムはオブジェクトのレイアウトを自動的に処理し、 それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 managed code 【マネージ コード】 共通言語ランタイムとの "連携のコントラクト" に従って実行されるコード。 マネージ コードは、ランタイムがメモリ管理、言語間の統合、 コード アクセス セキュリティ、オブジェクトの有効期間の自動管理などの サービスを提供するために必要とするメタデータを提供する必要があります。 Microsoft Intermediate Language (MSIL) に基づくコードはすべて、 マネージ コードとして実行されます。 unmanaged code 【アンマネージ コード】 共通言語ランタイムの規則および要件に関係なく作成されたコード。 アンマネージ コードが共通言語ランタイム環境で実行される場合は、 最小限のサービスで実行されます。たとえば、ガベージ コレクションは 実行されず、デバッグ機能も限定されます。 これから考えると、いわゆるmanaged C++っていわれてるプログラムは managed dataとmanaged codeの規約を満たしているっていうわけですね。 ILかx86バイナリかどうかに関係ないく。GC云々の話は規約を満たしている managed codeが生成したmanaged dataにおいて可能ということですか。 そして規約外のコードが全てunmanaged code。 となると、既存のC++プログラムを/CLRオプションでコンパイルした場合は、 例えそこからunmanaged codeを呼び出していたとしてもmanagedになる、 ってことですね。 もっと勉強しないと。。。
ms-help://MS.NETFrameworkSDK.JA/csref/html/vclrfunsafe.htm ところがどっこい、C#ではポインタを使うためにunsafeキーワードを 使うと、アンマネージドになってしまうらしい。 C#ではポインタの使えるマネージドコードというのは記述できないのかな? それとも上のドキュメントの記述が紛らわしいだけなのか、、
>>252 綺麗に線引きするには内部の動作を把握してないと無理。
だからみなあいまいな説明しかできない。
>>252 アンセーフとアンマネージは違う。アンセーフはマネージコードです。
CLRはマネージコードを実行します。アンマネージコードも一部実行できます。
アンセーフはマネージですから完全にCLRの傘下で実行されます。
MC++とJava(JNI)で連携できた。(・∀・)イイ!
257 :
デフォルトの名無しさん :02/05/11 00:57
.NETとJavaとネイティブコードを混ぜられるのはC++だけ。C++最強!
MC++で COMって書けるの? 厨でrjc
>>258 ATLで /clr をつければできると思う。
>>255 それしかないんだけど、なんかきたないね
261 :
デフォルトの名無しさん :02/05/12 22:26
MC++やろうぜ! 1はどこいった?(ワラ
262 :
デフォルトの名無しさん :02/05/13 17:07
↓で new Size のところ、フルネームにしないとコンパイルエラーに なるんだけどなんでだろ・・・? using namespace System; using namespace System::Drawing; using namespace System::Windows::Forms; __gc class Form1 : public Form { public: Form1() { // this->Size = *__nogc new Size(400, 300); this->Size = *__nogc new System::Drawing::Size(400, 300); } }; [ STAThread ] int __stdcall WinMain(void) { Application::Run(new Form1); return 0; } /* cl /CLR /FU mscorlib.dll /FU System.dll /FU System.Drawing.dll /FU System.Windows.Forms.dll Form1.cpp */
IL的に面倒なことになってるのでちょっと修正。 Form1() { // Size s(400, 300); System::Drawing::Size s(400, 300); this->Size = s; }
>>263 FormにSizeプロパティがあるのと関係?
>>264 あ〜、そういうことですか。Fontクラスもだめでした。
this->Size と System::Drawing::Size の判断ができないのか・・・。萎え。ヽ(´Д`)ノ
それはともかく、ありがとうございます。
266 :
デフォルトの名無しさん :02/05/17 14:19
267 :
デフォルトの名無しさん :02/06/06 15:55
age
268 :
デフォルトの名無しさん :02/06/06 16:14
wingdi.hに定義されているGetObjectと System::Resources::ResourceManagerのGetObject が、重なってしまいます。 ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_AmbiguousReferences.htm を見て完全限定名を使ってみたりしてるんですがwingdi.hの方で #ifdef UNICODE #define GetObject GetObjectW #else #define GetObject GetObjectA #endif // !UNICODE というようにdefineされてしまってResourceManagerのGetObjectがうまく使えません。 この場合は、どうしたらいいんでしょう? System::Resources::ResourceManager *rm= (new System::Resources::ResourceManager(S"testForm",Assembly::GetExecutingAssembly())); this->set_Icon(dynamic_cast<System::Drawing::Icon *>(rm->GetObject(S"MainIcon")));
269 :
デフォルトの名無しさん :02/06/06 16:28
>>268 ms-help://MS.VSCC/MS.MSDNVS.1041/vcmxspec/html/vcmg_MacrosandthePreprocessor.htm
270 :
デフォルトの名無しさん :02/07/01 05:09
あげ
271 :
デフォルトの名無しさん :02/07/02 19:17
manageC++でダイアログボックスとか使うときは自分でコード書かないといけないのですか? リソースからボタン貼り付けてボタンダブルクリックするとMFCクラスウィザードとか出てきますが MFCでしかウィザードは使用できないのですか? manageC++ではひたすらコード書き込みですか
272 :
デフォルトの名無しさん :02/07/02 22:42
マネドC++使っている人いますか?
普通に使ってますがなにか? っていいたいところなんだけど、 C#の方が便利だし綺麗だ。 これが現実。
ちょっとややこしいよね。そこまでC++に愛着ないし・・・
276 :
デフォルトの名無しさん :02/07/14 14:36
なんかDOS→NTの時の3.1, 95みたいな香りがする。。。
278 :
デフォルトの名無しさん :02/07/14 16:06
あぼーん
280 :
デフォルトの名無しさん :02/07/23 23:57
age
281 :
デフォルトの名無しさん :02/07/26 02:01
盛り上がらんね
managed C++ってなんですか?って聞いていい?
286 :
デフォルトの名無しさん :02/08/23 14:28
age
287 :
デフォルトの名無しさん :02/09/25 14:16
CLR (゚ロ゚) クルァ!!
288 :
デフォルトの名無しさん :02/10/07 19:55
あげ
289 :
デフォルトの名無しさん :02/10/25 01:08
age
290 :
デフォルトの名無しさん :02/10/29 20:43
あげ
↑リンクエラーのことね
292 :
デフォルトの名無しさん :02/11/02 18:33
、ヾ''""ツノ, ミ ・д・ 彡 <ほっしゅほっしゅ! "ミ,, , ; ;;::ヾ "'''''""
↑そりゃなんの生き物だ?
ネタが無いのに延々と上げてる馬鹿がいるな
こんな誰も使わないものに膨大な開発リソースをつぎこめるMSは 改めて凄い会社だとおもいます。まる。
C は屑!!
>>296 ネタもないのに上げるなって言ってるだろ
お前の環境はどうなんてっだと、小一時間問詰めたい。
299 :
デフォルトの名無しさん :02/11/24 18:56
久しぶりに揚! そして300getは君の手に…
年末もハイだぜ、ベイベー!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,〜((((((((〜〜、 ( _(((((((((_ ) |/ ~^^\)/^^~ヽ| | _ 《 _ | (|-(_//_)-(_//_)-|) | 厶、 | \ |||||||||||| / ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ (´⌒(´⌒;;
もうこのスレ巡回からはずすよウワァァン
だから上げるのならネタもってこい 無いのなら上げるな
303 :
デフォルトの名無しさん :02/12/02 13:11
managed C++ってなんですか?
まなげのじょうしき!
306 :
デフォルトの名無しさん :02/12/02 14:57
うんこちんちん
CLR だから開発言語は好きで良いってのはお題目で 少なくとも社内では統一しないと駄目だしな。 結局 C# と VB.NET に移行するだけの予感。
308 :
デフォルトの名無しさん :02/12/21 16:52
ふぅ・・・
なんかMSやばいんじゃない?まじで。
ManagedDXのソースコードを公開してくれれば 流行ると思うんだがなあ・・・
ソースを見なくても基本的にラッパーなんだから同じようなものは作れるだろ 何のためにソースが必要なのか小一時間問い詰めたい
> 基本的にラッパーなんだから ManagedDXを見てない方がよくおっしゃる。
>>313 ラッパー以外の部分というのを説明できない方がよくおっしゃる。
>>313 見たことないから説明できないんだろ、ほっとけ。
316 :
デフォルトの名無しさん :02/12/27 18:59
せめて一つのプロジェクトの中にC#とmanaged C++を混在できれば、 既存のC++のソースコードを(managed C++でラップして)流用するのに 都合が良かったのにな。 わざわざクラスライブラリ化するのは、作るのも取り扱いも面倒で嫌。 本当はmanaged C++だけで自分にとっては必要十分だし(普段はすべてUNIXなので)、 これを使いたいのだけどMSが全く力を入れないから困る。 各種サンプルやVisualStudio.NETでのRADとか。
318 :
デフォルトの名無しさん :02/12/27 21:24
これ何?
必要なら自前で作るからイラネ
もう次のコンパイラが出るわけだが・・・
323 :
デフォルトの名無しさん :03/01/05 17:36
あげ
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
IP売ったりしないですか?
基礎英語聞かなくっちゃwwwwwwwwwwwwww
ID:ZBsKvw39 が嫌がってるから
>>249 は効果有りそうだな。
329 :
デフォルトの名無しさん :03/01/09 12:51
managed C++でプロジェクトを作るとコンソールアプリのスケルトンができてしまいました。 formとかを使いたいとき、C#やVBみたいにツールボックスからドラッグ&ドロップしたいんですけど、 ツールボックス上のアイコンがみんなグレーになってます…。 これってすべてコードだけで記述しないといけないんですか?
中学生ちゃんねるに移民する日はいつ?
331 :
デフォルトの名無しさん :03/01/09 14:56
ウェー、ハッハッハ イキデキネーヨ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ハライテ- ウェー、ハッハッハ ウェー、ハッハッハ . ( ´∀`) <ZBsKvw39ってヴァカ? ∧_∧ 〃´⌒ヽ . ( つ ⊂ ) \_______ (´∀` ,,)、 ( _ ;) .) ) ) ○ ∧_∧ ,, へ,, へ⊂), _(∨ ∨ )_ (__)_) ⊂ ´⌒つ´∀`)つ (_(__)_丿 し ̄ ̄し タッテ ラレネーヨ ウェー、ハッハッハ
332 :
デフォルトの名無しさん :03/01/09 15:50
sscliの sscli\docs\techinfo\native_managed_interop.html ここに書いてある [Managed Extensions for C++ Supported] Native C++ classes can be compiled in the same assembly as managed classes and can interoperate directly. Managed methods can be exported directly as dynamic library entry points. これってどういう仕掛けなんだろう。マネージドコードのDLLにC++の クラスをマネージドコードとして入れられるのはいいとして、それは Precompileされた形なのかそれともILなのか。でも普通にアンマネージド からリンクできるってことは実行バイナリなのかな。よく分からん。 メソッドのエントリポイントだけマネージドコードDLLの中に用意しておいて アンマネージドからそれが呼ばれたら、JITコンパイラに制御を飛ばすって 意味に取ってるけどどうかな。
ネイティブとマネージ好きな形式が選べる 一つのソース中で混合も可能
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
あめぞうという昔旺盛を極めた掲示板は「誹謗・中傷・アダルトお断り」の文字を書き込んだ 事が原因の1つとなって潰れたが、いまの2chは「誹謗・中傷・密告お断り」というのを出したのと 同じ事なんだよなあ、、、
動物病院の話はISP法以前で、書き込み者の発言を消さない頃の話 今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
動物病院の話はISP法以前で、書き込み者の発言を消さない頃の話 今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
>>106 どこまでが中傷かどうか判断するのが難しそうっすね、、
>>107 ん?どの書き込みに対してのレスですか?(^_^;)
内容証明が届いて、7日間以内に消さないと、
告訴されても負けちゃう可能性が強いってことになるのかなぁ、、
>>455 DAT形式のログ管理だと大変そうだわな。
西村 博之 「2ちゃんねる」管理人 1976年東京生まれ。 1998年に中央大学(心理学専攻)在学中に 合資会社東京アクセスを設立し、 web制作、システム開発、 システム設計等のプランニングの仕事を始める。 1998年の夏に米国アーカンソー州に留学。 1999年5月に「2ちゃんねる」という掲示板サイトを始める。 2001年6月にイレギュラーズアンドパートナーズ株式会社設立。 地域コミュニティーまちBBSやレンタル掲示板JBBSなど、 コミュニティ関連のサービス提供ばかりしている今日このごろです。 東京都北区赤羽北2-31-16-1311 090-9840-9821(電話は訴訟関係のみ)
Age2ch、かな。 Windows、Linux、ソフトウェア、で今のところ見かけてる。
>530 俺はマンコとかいてるがIPとられても怖くないぞ。もし文句あってもやめないからな!!
おめでとうございます。 こちらこそ宜しくお願いします。
誰も突っ込んでやらないので急にかわいそうになったんだよ・・
>>312 キタ━━━━━(゚∀゚)━━━━━!!!!
N速なんか一番腐った板なんだからちょうどいいんでないの。犯罪者予備軍 うようよいるだろうし
ほぅ
犯行予告・個人や法人に対する誹謗中傷 内部告発・差別的発言・タメ口・顔文字 ぐらいかな
スレ立て人にも匿名性を持たせるらしいよ、今後
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
正直、杞憂。
海外国籍の人!運営しなよ。 管理人は以前TVでいつでも、譲りたいって言ってたし。
そそ、で本当にヤバい話なんてどれくらいあるかといえば(略
じゃなに、今までは何でも言える時代だったって訳?
2chをはけ口にしていた人はどこで憂さ晴らしをするのか少し興味ある
ワリィ、それの元ネタなにさ?
逆に立てて欲しくなかったんだが(w
>類似発言を連呼すればグレーゾーンに入りますね。 で、何でそれをお前が決めるんだ??
2002年2ちゃんねるアニメランキング1位のアニメに・・・・ モナーが出演決定!!!!!!!!!!!!!!!!!!!!! <<放送時間>> 1/12 大阪 テレビ大阪 (日)9:30〜10:00 東京 テレビ東京 (日)9:30〜10:00 名古屋 テレビ愛知 (日)9:30〜10:00 福岡 TVQ九州放送 (日)9:30〜10:00 札幌 テレビ北海道 (日)9:30〜10:00 岡山・高松 テレビせとうち (日)9:30〜10:00
名無しは強制フシアナ(串は強力に規制)。 フシアナが嫌なら有効メアド入力。 両方とも嫌なら●購入。 これくらいやればユーザーは10分の1くらいに減るかな。
エスパー伊東
名誉毀損ってのは "事実" であっても該当するのは周知の事実ですよね。 (ただし、公共の利益になる場合はこの限りではないのだけど) 事実誤認のレスで 名誉を毀損された =営業的な不利益が生じた のであれば 確かにレスが事実誤認であることを証明するのは 原告側。 しかし その反証の場が 2ch でなくてはならないというのは ? です。 今や 2ch は管理人の個人サイトとは判断されないほど メディアとしての 認知・影響力が裁判所で認定されているですから 公序良俗に反する情報発信は情報の発信者が責任を負うべきでしょう。 その発信者の情報をわざと特定させないのは ある意味、確信犯的な共犯者と見なされても仕方ないでしょ。 (もちろん、Internet の匿名性 については十分、議論の余地はあります。)
引き続き gamble 行きます。
(^^)
4nd フォンドボー?
(^^)
368 :
デフォルトの名無しさん :03/01/19 12:48
緊急浮上!!
(^^)
(^^)
なんでこのスレは厨房が多いんだ?
373 :
デフォルトの名無しさん :03/01/30 06:24
あげ
/clr付けるとフツーのC++コードもILで吐かれるんですね これってパフォーマンス上のペナルティはないんでしょうか (インライン化を阻害するとか) (1)全部managed(JIT様を信じる) (2)__gcの絡むところだけを#pragma managedして、 残りは#pragma unmanagedにする どっちがいいですかね
376 :
デフォルトの名無しさん :03/03/12 21:50
age
もう一度・・・浮上するんだ!!
379 :
デフォルトの名無しさん :03/03/15 01:03
勃起age
380 :
デフォルトの名無しさん :03/03/15 14:55
381 :
デフォルトの名無しさん :03/03/18 00:01
結局使ってる人はいないという,,,,,,,
383 :
デフォルトの名無しさん :03/04/06 00:47
VC++.NETのCD2枚目の \Samples\VC\Extensibility\AppWizards にコンソール用のアプリケーションウィザードと ManagedC++WindowsFormのアプリケーションウィザードがある。 わざわざ別にしなくてもいいのに。
(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
386 :
デフォルトの名無しさん :03/04/30 10:19
387 :
デフォルトの名無しさん :03/05/26 12:34
WindowsFormデザイナキタ━━━━━(゚∀゚)━━━━━!!!!
388 :
デフォルトの名無しさん :03/05/27 00:35
もまいらVS2003になってVC++でもフォームデザイナがついたのに なんにもなしですか!!!!!
>>388 期待して良いのか?どうせまた裏切ら(ry
フォームデザイナ以外の変更点を知りたいんだが どこにも書いてねえよ
ANSI C++に98%対応したっていうのはどうなったんだ?
そりゃMC++とは関係ねえっしょ
MC++はポインタ使えるの?それじゃー意味ないっしょっていうつっこみは無しで。
恐ろしいことに、使える。
>>395 回答ありがとう。
どうmanageするんだろうね。
>>397 そうだね。イメージ的には荒馬慣らしって感じがする>まったくの想像。
JITが基本なのでスタックもヒープもそのままということ インタプリタやJavaのようなものとは全く別物だよ
自分の中では「MC++はC#をC++風に味付けしたもので〜」という記事を どこかで読んで以来、まったく興味を無くした経緯がある。
>>400 GCに任せるかどうかは選択できるわけじゃん。
>>401 「C#はMC++をJava風に味付け」の間違いではなくて?
>>403 いや、「まずC#が先にあって〜」みたいな切り口だった。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
沈みすぎage
>>404 まず.NETがあって、じゃないかなあ
小さな DLL だったら、 C# でラッパクラス作るよりも、 Managed C++ で書き直しちゃう方が早かった。 てか C# の DllImport うんちゃらがよう分からんですタイ。 Managed C++、思ったより使えそうな感触。
>>407 そのための MC++ です
日本語の参考書籍・・・無いよなあ・・・
無いっすねえ.. 6800円かそこらの分厚い本で VC++.NET 解説みたいなのんが有ったんで チラっと眺めてみたんですが、 Manged C++ に関する記述は 20 ページかそこらだけ。 この厚さで... と涙せずにはいられませんでした。 つーか .NET と無関係な VC++ な記述が殆どを占めてて泣けた。 チラっと見ただけなんで間違ってるかも知れないけど。
初心者ですが、 MFCで作ったコードをマネージドに変換して コンパイルして、 CRLで動くようにできますか? またドキュメントビューアーキテクチャを マネージドシープラで実現することは可能ですか?
411 :
デフォルトの名無しさん :03/06/02 15:25
MFC 使ったやつとかよりも API じか叩きしたようなのほど効果有るっぽい。 ところで参照渡しすれば C# で ref する扱いになるみたいだけど out する扱いは無理ぽ? ref だけで用事足りるからどうでも良いっちゃ良いのだけど なんか無駄に気になったので。
414 :
デフォルトの名無しさん :03/06/07 18:13
void WndProc(Message *m) { if (m->Msg == WM_NOTIFY) { LPNMHDR nmhdr = (LPNMHDR)m->LParam; } } Managed C++でこういう感じにキャストしたい場合は、どういう方法でやればいいんでしょうか? dynamic_castなどでもだめでした。。
(LPNMHDR)m->LParam.ToPointer(); で出来ました。。
ほう。なるほど。
417 :
デフォルトの名無しさん :03/06/20 18:29
.NET C++ でWindowsフォームアプリケーションでウィンドウメッセージを捕まえるにはどうすればいいでしょう? 解像度変更を検出したいんだけど・・・。
[System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")] void WndProc(Message* m) { // ... } ヘルプにはFormでWndProcをオーバーライドすると書いてあるんですが、 オーバーライドすると' マネージ型で、仮想メソッドへのアクセシビリティを少なくすることはできません。」 とエラー吐かれます。 そもそも1行目の [System::Security... は何を意味するかと子一時間...
何で参照渡しをポインタにしているのか小一時間...
protected: void WndProc(Message* m) { // ... } これだけでいけますた。 さっきのエラーはprotectedで宣言された仮想関数をprivateには出来ねーぞって事でした。
保守
422 :
デフォルトの名無しさん :03/07/15 03:32
>>388 ほんとだ使えるようになってる。
MC++で
インデクサとforeachは使えないのでしょうか?
(演算子がC++の時のようにオーバーロードできないような...)
423 :
デフォルトの名無しさん :03/07/15 05:35
サンプル作ってみた #include "stdafx.h" #using <mscorlib.dll> using namespace System; using namespace System::Collections; #define mprint(x) System::Console::WriteLine( x ); namespace DesignPattern { __gc public class Book { private: System::String *name; public: Book(){this->name = System::String::Empty;} Book(System::String *n){this->name = n;} __property System::String* get_Name(){return name;} __property void set_Name(System::String *n){this->name = n;} };
424 :
422(続き) :03/07/15 05:45
__gc public class BookShelf :public System::Collections::ArrayList, public System::Collections::IEnumerator { private: int mIndex; public: BookShelf(int maxsize) :mIndex(-1){} __property int get_Length(){return __super::Count;} void append(Book *b){this->Add(b);} //インデクサが使えないので Book* at(int index){return static_cast<Book*>( this->get_Item(index) );} System::Collections::IEnumerator* GetEnumerator(){return this;} __property System::Object* get_Current(){return at(mIndex);} bool MoveNext(){ if(mIndex <(this->Length-1)){mIndex++;return true;} else{return false;} } void Reset(){mIndex=-1;} }; } using namespace DesignPattern;
425 :
422(続き) :03/07/15 05:48
int _tmain(){ BookShelf *bookshelf = new BookShelf(3); bookshelf->append(new Book(S"Book1"));bookshelf->append(new Book(S"Book2")); bookshelf->append(new Book(S"Book3"));bookshelf->append(new Book(S"Book4")); /*これをやりたいんだが... foreach(Book book in bookshelf) Console.WriteLine(book.Name);*/ //ちょっとだるいね for(int i=0;i<bookshelf->Length;i++){System::Console::WriteLine( bookshelf->at(i)->Name );} //だるいよだるすぎるよ {IEnumerator *i = bookshelf->GetEnumerator(); i->Reset(); while(i->MoveNext()){ Book *book = static_cast<Book*>( i->Current ); mprint(book->Name); };} //ということで foreachをマクロでやってみる #define mforeach(type____,identifier____,expression____) \ { IEnumerator *i____ = expression____->GetEnumerator(); \ i____->Reset(); \ while(i____->MoveNext()){ \ type____ *identifier____= static_cast<type____*>( i____->Current ); #define mforeach_end \ }; \ } //イイ mforeach(Book,book,bookshelf) mprint(book->Name); mforeach_end return 0;}
managed Age++
428 :
デフォルトの名無しさん :03/07/18 23:54
マネージドなクラスをSTLのコンテナに入れることは、できないみたいだな。
429 :
デフォルトの名無しさん :03/07/19 00:19
COBOLだけはガチ!
gcrootを使ってできた。
431 :
デフォルトの名無しさん :03/07/20 15:12
>>430 へー。
こんな感じでやってみたけどOKだった。
std::vector<gcroot<String*> > v;
for(System::Int32 i=0;i<100;i++){
v.push_back(String::Concat( S"test",i.ToString() ) );
}
Console::WriteLine( v[23]->ToString() );
433 :
デフォルトの名無しさん :03/07/20 17:56
>へー。 >こんな感じでやってみたけどOKだった。 読んだ瞬間ダメだったのかと思って焦った。 ところでこのToString()はいらないよ。 >Console::WriteLine( v[23]->ToString() );
434 :
デフォルトの名無しさん :03/07/25 19:17
>425 static_castでいいのかな? dynamic_castで型のチェックした方がいいと思うんだが。
>>434 ほんとですね。
動的にチェックするように変更しました。
(キャスト失敗時に System::InvalidCastException がスローされます)
#define mforeach(type____,identifier____,expression____) \
{ System::Collections::IEnumerator *i____ = expression____->GetEnumerator(); \
i____->Reset(); \
while(i____->MoveNext()){ \
type____ *identifier____= __try_cast<type____*>( i____->Current );
436 :
デフォルトの名無しさん :03/07/27 01:17
(^^)
438 :
デフォルトの名無しさん :03/08/12 09:33
MSDNのXmlSerializerにあるサンプルをMC++で試しているのですが、 __gc struct Address{ [XmlAttribute] String *Name; }; の[XmlAttribute]のアトリビュートだけがなぜか見つからないと出ます。 解決策はないのでしょうか? (他の属性はSystem.Xml.dllを参照の追加してOKでした)↓ [XmlElementAttribute][XmlArrayAttribute][XmlRootAttribute]
そりゃXmlAttributeAttributeじゃな。たしかに紛らわしいけど。 最初のAttributeはXMLの属性のことで、次のAttributeは.NETの属性のことじゃ。
440 :
デフォルトの名無しさん :03/08/12 13:17
>>439 [XmlAttributeAttribute]でできました。ありがとうございます。
System.Attributeの派生クラスでないと属性には使えないから
System.Xml.XmlAttributeはSystem.Xml.XmlNodeの派生クラスでXMLの属性なんですね。
C#,MC++ともにTest.HogeAttribute が属性の[]の中では
[Test.Hoge]か[Test.HogeAttribute]と書けるみたいです。
だから、C#で[XmlAttribute]と書かれたものはXmlAttributeかXmlAttributeAttributeのはず。
したがって、属性クラスのSystem::Xml::Serialization::XmlAttributeAttributeを使えばよい。
ただ、MC++で[XmlAttribute]とするとエラーが起きる模様。(->XmlAttributeAttributeとは自動解釈しない?(安全策?))
また、C#では[XmlAttribute]でも可能。でも、カーソルを持っていくと、
ツールチップにSystem.Xml.XmlAttributeと表示されるみたいだが???...。
(->C#コンパイラはXmlAttributeAttributeを選んでるのかな?)
usingする前提だと名前の衝突で紛らわしいことになるからフルネームで
[System::Xml::Serialization::XmlAttributeAttribute]
としておいたほうがいいのかな。
ただ、System::Xml::Serialization::XmlAttributeAttributeAttributeができたとき,
C#とMC+でどうなるのかは試してないです。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
442 :
デフォルトの名無しさん :03/08/20 20:07
checkedステートメント は使えないのでしょうか?
443 :
デフォルトの名無しさん :03/08/22 17:55
>442 使えないようですね。
444 :
デフォルトの名無しさん :03/09/10 19:34
age
445 :
デフォルトの名無しさん :03/09/23 22:38
昔ドキュメントビューアーキテクチャでC++あきらめました。 Del厨です。 最近C#がだいたい使えて来たので、 MC++→MFC→非MFCと言う順番に学習したいと思ってます。 C♯→MC++移行で参考になるようなサイトないでしょうか。 たとえば、初心者はC♯よりもVBよりもMC++なら将来ネイティブアプリ作れるとか、 たとえばC++なのに.NETなら簡単にブラウザを作れるみたいな。 無理?
446 :
デフォルトの名無しさん :03/09/23 22:54
→非MFCは別にいらんとおもうけどなあ
>MC++なら将来ネイティブアプリ作れるとか カエレ!
448 :
デフォルトの名無しさん :03/10/03 05:37
C#プロジェクト(アプリ)にMC++プロジェクト(ライブラリ)を挿入して、 参照の追加をしているのですが、 test.cpp で普通にインクルードしたいのですが、例えば #include<string>とすると test error LNK2001: 外部シンボル ""void * __cdecl memmove(void *,void const *,unsigned int)" (?memmove@@$$J0YAPAXPAXPBXI@Z)" は未解決です。 test error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void (__thiscall*)(void *),void *)" (?__CxxCallUnwindDtor@@$$J0YAXP6EXPAX@Z0@Z)" は未解決です。 test error LNK2001: 外部シンボル ""void __cdecl operator delete(void *)" (??3@$$FYAXPAX@Z)" は未解決です。 .... (計:30件) というエラーが出てしまうのですが、解決策はあるのでしょうか? (VC2003,XP) NG: vector,list,deque,string,locale,boost/shared_ptr.hpp .... OK: cstdlib,cstdio,boost/timer.hpp,typeinfo,boost/scoped_ptr.hpp ....
449 :
デフォルトの名無しさん :03/10/28 21:35
おい! managedC++はなんでフォーム継承できないんだ?????
450 :
デフォルトの名無しさん :03/10/29 10:51
VBやC#からでも簡単にCOMが呼べることを知って、MC++を使わずにATLで コンポーネントを相変わらず書いている私は逝ってヨシですか? 移行するタイミングが難しいんだあ。
Managed C++は次のバージョンで文法が全く別物になります。
452 :
デフォルトの名無しさん :03/11/23 22:55
453 :
デフォルトの名無しさん :03/11/26 12:29
MFCとどっちが仕事になりますか
>>450 結構居るみたいですよ、そんな人。逆もできるしね。
.NETの相互運用能力ってちょっといい感じ。お気に入りです。
455 :
デフォルトの名無しさん :03/11/28 20:55
人気ないなぁ・・・
>>452 C++/CLIだって。
N* hn = new N; // allocate on native heap 40
N& rn = *hn; // bind ordinary reference to native object
R^ hr = gcnew R; // allocate on CLI heap
R% rr = *hr; // bind tracking reference to gc-lvalue
^とか%使い回すあたり、なんか好きだ
CLIヒープクラスも指定子がrefになって、見た目に分かりやすいな
いいかげん、__hogeな書式のキーワードはうんざりだからな
リリースはいつごろだろう
てか、CLIヒープクラスって言い方は違うのかな クラスの種類にかかわらず、newもgcnewもできる? もう少し読もう
単にref classと言えばいいのか? C++のリファレンスとの関連性はあるんかな もう少し読もう
ちかれた・・・。 やっぱ単に__gc → refか。 for eachはよいね。
>CLIヒープクラスも指定子がrefになって、見た目に分かりやすいな この時点で、 __gcクラスも指定子がrefになって、見た目に分かりやすいな と言えばよかっただけか。 てか、誰もいないじゃん。一人芝居ショボン
以前、「managed C++は整数もかならず整数オブジェクトになる」と言われますた。 そのときはアホな設計だなぁ、と思ったのですが、 手元にあるショボイ入門書を見ると「単純型」というのがあるので、 これが Javaでいうプリミティブ型に相当するのではないかと思うのですが、 実際のところどうなんでしょうか。教えて Teach Me
>>460 そうだよ
value classのこと
Javaより柔軟だから
と、思ったが何か違うな そもそも、「managed C++は整数もかならず整数オブジェクトになる」んだっけ? 教えて Teach Me
多少こんがらがったが、 Managed C++ ≒ Java __value class≒primitive type __gc class≒class __box(__value class)≒class Wrapper { primitive type member; } こんな感じ
>>460 javaで言うところの、primitive型とclass型の間を、比較的簡単に
行き来できるのが.NET系の言語の特徴。
MC++でもそれを利用できるが、intと書いただけでIntegerオブジェクトが
生成されるわけではない。
value型とclass型の違いはCLRでも重要な事項なので、
MC++に触れる前にしっかり理解しておいたほうがいいと思う
アンマネージドコンテキストに限定して書いてるのかもしれないけど、 MC++でも、intはSystem::Int32 value type(simple type) だと思うよ
寂れてる様に見えるが見てる人はゼロでないのだな
>>466 そう書いたつもりが、そうなってなかった
宇都氏
>>467 そろそろ飼いならした人が増えてきてもいいんじゃないかなー
日本語の解説書が欲しいところ
一冊全部MC++って、話題もつの?
473 :
デフォルトの名無しさん :03/12/22 20:25
これはC++じゃないと思った。
474 :
デフォルトの名無しさん :04/01/22 07:36
>448 かな〜り遅いレスだが、これは msvcrt.lib, msvcrtd.lib をリンクすればいい でも、なるべく #pragma unmanaged のエリアで使おう
ところで、漏れの質問なんだが boost::spirit をアセンブリにして利用したくて managed C++ で boost::spirit のC構文のサンプルをコンパイルしたんだが、 C1129 つーエラーが出て歯がたたねぇ 普通のC++としてはサンプルは無事動くのに、managed C++ じゃテンプレートの 展開が違うのか?
>476 自己解決。boostをインクルードしているとこまでまとめて unmanaged 指定してやったら コンパイルは通過。ただし、リンクエラーLNK1254でだめぽ r'⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒ヽ ⊂゙⌒゙、∩ ヽ__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__ノ ⊂(。Д。)
478 :
デフォルトの名無しさん :04/01/31 17:11
.NETも従来のC++も使いたいんだけど コードの中で混在させる事は出来ますか? .NETは資料が少ない(C++の場合)ので、自分にはメインでは使えないのですが 簡単にスレッド起こせたり、フォームの半透明とかが簡単だったりするんで・・・
混在可能。 > 自分にはメインでは使えないのですが > 簡単にスレッド起こせたり、フォームの半透明とかが簡単 そういう部分をメインというと思うんだがどうか。
480 :
デフォルトの名無しさん :04/01/31 21:06
質問です。 C#で Byte[] sendBytes = Encoding.ASCII.GetBytes("01"+textBox1.Text+" "+textBox2.Text+"\0"); こんな感じで書いてたコードを managedC++で書き直したいのですが どうすれば良いのでしょうか? Byte sendBytes[] = Encoding::ASCII->GetBytes("01" + textBox1->Text + " " + textBox2->Text + "\0"); これだと、ポインタにポインタが足せないと言われてしまいます。
>>480 地道に String::Concat かな?
文字列4つまでは Concat で一度に連結できるようだ。
どうもです。 とりあえず sprintf(buf2,"01%d %d\0",textBox1->Text,textBox2->Text); としました。。。(Cの知識しか殆ど無かったりします。
%sの間違いです。
またまたすみません。。。
>>480 で書いたC#のコードと
>>483 でやったコードの結果が違うようです。
一応、この文字列をUDPでサーバーへ転送するのですが
サーバー側でフフフという文字が大量に発生してしまいます。(\0が無い為?
何故このような事がおきるのでしょうか?
sprintf(buf2,"01%d\n %d\n\0",textBox1->Text,textBox2->Text); こんな感じで\nを付けてみ
>>486 どうもありがとうございます。
無事出来ました。
488 :
デフォルトの名無しさん :04/02/01 16:26
namespace 会社名.プロジェクト名 { public class ホゲホゲ { } } C#で上のように書いたコードを Managed C++ で書き直した場合どうする? namespace 会社名.プロジェクト名 { __gc class ホゲホゲ { }; } って書けない? namespace を一発で書くような方法をきぼんぬ。
489 :
デフォルトの名無しさん :04/02/01 19:01
IPEndPoint *RemoteIpEndPoint = new IPEndPoint(IPAddress::Any, 0); Byte receiveBytes[] = udpClient->Receive(&RemoteIpEndPoint); String *returnData = Encoding::ASCII->GetString(receiveBytes); MessageBox(NULL, returnData, "", MB_OK); こんな感じで受信結果をMessageBoxで表示したいのですが 型が違うため出来ません。 どのようにすればいいのでしょうか?
・どの行でエラーになってるのか ・エラーの詳細 を書け
MessageBox(NULL, returnData, "", MB_OK); ここで error C2664: 'MessageBoxA' : 2 番目の引数を 'System::String __gc *' から 'LPCSTR' に変換できません マネージ型をアンマネージ型に変換できません。 です
とりあえず sprintf(RevBuf,"%s",returnData); こんな感じで、無理やり変換しましたけど。。。 なんだかなぁ・・・
>>489 String型をC文字列に変換するメソッドがあると思うけど。
494 :
デフォルトの名無しさん :04/02/04 23:51
う〜む・・・ なんでMC++はこんなに普及しないんだ? 時期OSの仕様がああなった以上、.NETは避けて通れない道 現に、C#の書籍や情報はあちこちに溢れてる でも、C++で.NETってのがこんなに普及してないのが不思議でしょうがない。 なんでだろう・・・・・ 俺も勉強したくても書籍はないわWebにも殆ど資料ないわ、MSDNにはC#とVB.NETのみだわで大変 もしかしてC#の方が楽って事? Win32APIやMFCで作った過去の遺産を使いたいって人も居ると思うんだが・・・
VisualStudio.NET2002では、ManagedC++でのフォーム作成がGUIでできなかったって 聞いたことあるけどホントですか?
VisualStudio買わないとVC++の最適化コンパイラが手に入らないのが(´・ω・`)
>>494 MC++とはまた別のものを作ってるという話もあるよ
C++/CLIでそ MC++はつなぎなんじゃないの
499 :
デフォルトの名無しさん :04/02/05 20:38
C#の方が256倍マシ .NETでマネージドC++なんか使ってるやつの気がしれない
500 :
デフォルトの名無しさん :04/02/06 23:19
情報量の少なさに耐えかねてMC++見限ってC#に行きました。。。 これもMSの計略か・・・・
C++はネイティブのオブジェクト指向言語というだけの価値しかないわけだし。 ネイティブじゃないなら存在意義が無いし
んー、でもXMLシリアル化とか結構魅力なんだよねー。
MC++はラッパとしての価値がメインなんじゃね? COM化するのが正統なんだろうけど、それもメンドいことあるし。
>488 それは漏れも悩んだが駄目らしい boost みたく namespace boost { namespace spirit { }} と書くことにしてる。こういうところこそ拡張してほしかったんだが
505 :
デフォルトの名無しさん :04/02/07 20:03
newがあるのに対になるdeleteが無いのはおかしい 前のドアがあるのに裏口が無いようなもの
>>565 テレビで食事は放送しても排泄は放送しないだろ。
>>565 は排泄ネタを振ることを運命付けられてしまったわけだが
508 :
デフォルトの名無しさん :04/02/09 12:56
確かにnewじゃなくてinitとかの方が自然だ。
>>505 入るときにはどのドアに入るか自分で選ばないと駄目だけど、
出るときは自動排出。
510 :
デフォルトの名無しさん :04/02/09 18:12
つうかさ、newなんているの? A a; a = A( 3); これでよくない?
ぶっちゃけ 型や構造体と同じ使い方で良い
>510 Test test(80, 100); こういう宣言ができれば、new 無しでもいいんだよなぁ ref もあるわけだし、受け渡しで困るわけで無し (´-`).。oO(・・・なんでマネージド型はポインタじゃないといけないんだろう)
値型はポインタではないのでは?
値型の参照で操作することに統一してはあかんの?
>513 マネージド型って値型で作成できるの? __gc が付くクラスは new しないと駄目よってエラーが出るんだけど
>>515 __value struct V {
int i;
int r;
};
とか。
>517 それはちゃんと参照渡ししてくれるの? 値渡しでは意味なさそうだが・・
>516-517 IsValue を入れると付くやつだよね? これってマネージド型とは排他的だと思うんだけど
マネージ型の基本事項、制限事項読んできた ('A`)マンドクセ ・・・MC++の存在意義を見失いそうな気分です
>>520 >MC++の存在意義
既存コードの流用が簡単ってこと以外、MC++に意義なんてあったっけ?
>>518 次のコードで参照渡しはできそうだね。
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
public __value struct V
{
int i;
int r;
};
__gc class TestClass
{
public :
static void Test(V& va)
{
va.i = 4;
va.r = 8;
}
};
int _tmain()
{
V v1;
v1.i = 2;
v1.r = 4;
Console::WriteLine(S"v1.i = {0}", v1.i.ToString());
Console::WriteLine(S"v1.r = {0}", v1.r.ToString());
TestClass::Test(v1);
Console::WriteLine(S"v1.i = {0}", v1.i.ToString());
Console::WriteLine(S"v1.r = {0}", v1.r.ToString());
Threading::Thread::Sleep(5000);
return 0;
}
>521 既存コードの流用もCOMにしておいた方が便利だし、あまり利点になってない 既存C++のパワーと.NETライブラリの融合を期待していたのに_| ̄|○
>>504 レス、サンクス!
質問の意味が分からず、総スカン食らったのかと思たよ。
けど、やっぱ、ダメなのね。
これが煩わしいのと、
C#でいうところの param が指定されたメソッドを呼び出すのが煩わしいのがあって、
MC++は、本格的に利用できないね。
さらに次のバージョンではC++ CLIになるし、
個人的に、MC++はボツかなぁ....。
WinFX C++CLI .NET MC++ ということ?
C#でいいじゃん なんでC++にそこまで執着するわけ? もうC++ CLIも要らないよ
C++には夢があるんだよ、夢が。 特にtemplateの夢はC++プログラマなら離れられないものなんだよ・・・。
528 :
デフォルトの名無しさん :04/02/11 20:57
>>527 いまどきテンプレートだって。
Visio 使えよ Visio! プ
>528 最近の Visio はすごいんだな((;゚Д゚)ガクガクブルブル >526 template に関しては Generic で C# でもサポートされるところがあるから、微妙かな ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w だから、C++ はあくまで限りなく標準のままに .NET との親和性を深めてホスィ
> ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w だからC#使うんだよ。ECMA標準。もうすぐISO標準。
C++も、MFCによって成長した感があるから、あんまり変わんないや・・・ まぁ、漏れは趣味ではC、仕事ではJavaとCOBOL(過去の遺産w)だけどね。
C++ の template なんか C++ のプログラマの中でも Visio より知名度が低かったりして。
>533 さすがにそれは・・・、Java も C# も template のありがたみがわかって回帰してるわけだし C#の標準化ってCILも含めてなの? それとも言語仕様だけ?
文法だけ。CLI含まず。
>535 そっか。ごめん漏れにはやっぱりMSは信じ切れないよ(´・ω・`) C++ CLI が来るまで待つかぁ >536 恐ろしい話だ・・・
>>537 C++ CLI出ても、それはMS主導だから一緒でしょ
MFCやCOMですら既に十年以上続いてるわけだが 信用できないとか言ってる奴はアフォか?
まぁ、結局MFCやCOMをバカにしてるのは、 Windowsの動作そのものを理解してないやつばっかり。
>>540 すみません、Windowsの作者ですがMFCやCOMを馬鹿にしてますが何か?
>>541 ああ、あなたがあのブサイクなメガネチビ・・・
カトラー様を侮辱する気か!
CPUの研究者にはフォンノイマン症候群ってものが あるらしいけど、OS板の香具師はデビッドカトラー 症候群ってものがあるのかな。カトラーだって MachのアイディアをMSに持ち込んで、そこから設計したって いうのにね。OSASK。。。
#include <atlbase.h> するとこんなエラー出るんですけどどうにかならんですか? error LNK2020: 未解決のトークン (0A00000B) atexit error LNK2020: 未解決のトークン (0A000012) ??_7type_info@@6B@ error LNK2020: 未解決のトークン (0A00001A) free fatal error LNK1120: 外部参照 3 が未解決です。 CComPtr とか使いたいのに
>545 >475
ありがと〜(^ー^)/ たすかりますた!! ここはいいインターネットですね。
Win32 Platform SDKと.NET Framework SDKとは共存できないのでしょうか? 前者を入れた後に後者を入れると前者のドキュメントの目次等が表示できなく なるのです。解決策等ご存知でしたら、ご教示願います。
>>548 漏れもそれなった。PSDK入れた後に.NETSDK1.1を入れたら。
とりあえず不具合はそこだけなので、そのまま放置してます。
素直にVS買えよ
自己レスです。逆順でインストールしたら解決しました。
>535 このPDF見ると、CLIもECMA,ISO/IECに標準化するのね
555 :
デフォルトの名無しさん :04/03/15 03:00
っていうか、そこまでしてC++に執着してC++/CLIに移行するメリットあるのかな・・・ 素直にC#に行った方が飯食える気がする・・・ っていうか、C++/CLIって出る前から雲行き悪すぎるし、話題にすら殆ど上がって無いあたり。。。 MSは次期OSは.NETで統一するんだし(決定済み) .NETの為に作成したC#が一番.NETが使いやすいんだし(事実) こう考えると、C++にいくら自分が残っても、飯食うために使う事は出来ない気がするんだけどなぁ・・・
死滅スレのノリですな
managed C++は既存のC++で組まれたアプリケーションを.NET環境に移行するためのものだね。 (そういう需要があるかとか、移行がスムーズにいくかはさておき) 新規の開発でmanaged C++を選択する必要性や動機はほとんど無いだろね。 >555が書いてるように、C#で開発した方が生産性高い。 C#が選択肢になりえない対象の場合は、managed C++も選択肢にほぼなりえない。
ネイティブコードとマネージドコードの「つなぎ」に使うためのものじゃないのか?>MC++
つなぎというのが何を指してるのか今市よく分からんが マネージドコードからアンマネージドなコードを呼ぶだけなら なおさらMC++である必要はない罠
なんでそこまで CLR 上で C++ が動くことに反発するのかわからんが、MS がこの方向を 覆すことだけはないって もしも、現状の MSIL と CLR が C++ を載せる能力がないと MS が認めてしまったら 将来、CLR 上でのベースAPIとなる WinFX が C++ に対して親和性がないと言っている ことになってしまう Longhorn でのアプリが .Net とネイティブ C++に2局化してしまう。これは CommonLangage として .Net を位置づけようとしてる MS にとっちゃ問題だろう? Win32 から WinFx への移行が進まなくなる 既存の VC++ での開発者を WinFX に流すためにも MS が C++ を外すことはないだろう それが MC++ ではなく、C++/CLI なだけで
反発してるんじゃないんだよ (本来の)C++や、MC++、C#などを一通りやった上で ネイティブアプリケーションに比べると、いくらか足枷が出来てしまう .NETアプリの開発ではC++の生産性の悪さが目に付いてしまうだけ 現状の.NET Frameworkだとネイティブアプリだと普通に出来ることを 実現するのに様々なトリックが必要になったりするからね あと、MSが一番力入れてるのはC#だろう MC++については既存の開発者の移行を促すと言う意味では賛成だが あくまで移行のための言語であって、主力になりえるとは到底思えない
MC++ に関しては移行のためにとりあえずやっつけで作ったものだけど、開発者の 理想としては、従来の VC++ で組んだアプリがそのまま CLR 上に載ることでないの? それが実現できれば、アンマネージドな軽快さとマネージドの堅牢性があいまって 最強の環境になると思うんだが とりあえず、MS はその方向へ向かおうと努力しているように見える(と信じたい) もちろん、.Net の開発環境として最適なのは C# って点には同意するし、漏れも C# は 大好きだ
現状として > 従来の VC++ で組んだアプリがそのまま CLR 上に載る ということはないし、実際 > MS はその方向へ向かおうと努力している ということもないように私は思う。将来的にはWin32の方が ネイティブではなくなり、エミュレータ上で動くようになって、例え > Longhorn でのアプリが .Net とネイティブ C++に2局化してしまう。 としても、結局は後者の(高速性等の)メリットはなくなってしまう であろう。 結果として、managed C++で.Netを学びつつもその扱いにくさを 感じ、その後C#を学んで言語・APIセットともに移行が完了すると いう順序をMSは目論んでいるのであろう。すなわち、managed C++は C# & WinFXに向かうための迂回路の1つとして用意されているに 過ぎないと考えられる。 しかし、例えばWin & Macなどクロスプラットフォームで作っている サードパーティのために、Mac動作の.Net環境をMSが作るかどうか…。
MC++とC++/CLIって別物ですか?
>564 MC++ が移行準備段階で、C++/CLI が移行中な感じ 個人的には WinFX が来るのと同時に、C++/CLI がもう一つ構成が変更されるように思える MC++ が既存の C++ に マネージド型を扱うためのキーワードを追加してなんとかやりくり しようとしているのに比べて C++/CLI の方は CLR との相互やりとりのエリアを扱うハンドル 型を追加したりして、Heap Alloc と GC Heap 上のエリアを並立させようとしている模様 詳しくは上の Candidate base でも呼んでちょ
>563 Mac 用の Office とかがあるから、公開するかはともかく CLR は作るんじゃない? Office は .Net 化するらしいから、ソース管理を考えるとブランチ分けするよりは CLR を作るかと
>563 Java の失敗から見てもわかるとおり、アンマネージドな部分の要求は決してなくなることは ないと思う。(私にとってだが)業務用の主となる解析や描画、Design 演算はまずマネージド にならないだろうし、既存の資産との流用性からアンマネージドな部分を作り、接続する言語は 必要だ まず、この点は認めてもらえるだろうか? その上で、マネージドとアンマネージドな領域を自在に行き来できる言語として MC++ (は駄目だけど、その先のC++/CLI)があるのではないかと思う これは開発者にとって充分に魅力的だと思うんだが、違うかなぁ なんか昔の PureJava 論議みたいになってきた気がするが(w
マネージドとアンマネージドな領域を「自在に」行き来できるなら 価値あると思うよ 今のはおよそ自在とは言えない代物だからね
MC++は、既存ライブラリを.NET向けにwrapするための thin wrapperを作るためのもの、にしては あまりにリッチだと思うぞ。 そこにそんだけリソースを費やせるのはMSぐらいのもんだろうけど。 Javaの失敗というのには同感。JNIははっきり言って拷問。 MC++の自在っぷりは異常。.NET語とC++語とマシンコードを 同時に解釈できるのはなにげにすごいぞ。
議論以前にMC++普及してないじゃん。。。 日本語の参考書籍が1つも無い状況っすよ? こんなのでは勉強もやりにくいし・・・ もうわざわざC++使う必要もないんじゃないかな・・・ 既有技術そのままで実装出来るとは思えないし・・・
VS.NET系のVC本にはMCの解説を入れているものが、私の知る限りで5冊はあるけど。 いったいどんな田舎に住んでるんだろう?
572 :
デフォルトの名無しさん :04/03/17 10:13
日本語でないと読めない奴はだまってC#とVBで下請けやってればよい
こんなの勉強しなくても普通に使えるだろ。 なにをそんなに慌ててるのかしらんが。
>>571 まぁ、5冊だけどな
資料が少ないってのは事実っしょ。
普及してないってのも事実だし。
正直、C#に行かずにMCにとどまる理由は、移行のためのラッパー書くのみっしょ
それ以上の使い道ないから、移行が完了すると、もう使う事もないでしょうし
JNIがアホすぎたんだよな
Whidbey の Community Technology Preview のコンパイラだが、C++/CLI も コンパイルできるっぽい ふつうに Whidbey のプロジェクトから /clr のオプションをつけると /clr:oldSyntax と なって C++/CLI の構文はエラーになるけど、コマンド・プロンプトで cl /clr とやって コンパイルを通ると、動いたよん
577 :
デフォルトの名無しさん :04/04/17 16:08
質問です。 クラスのインスタンスを作る時に グローバルな領域において置きたいのですが MC++だと関数の中でしかインスタンスを作れません。 どうすれば各関数から共通のインスタンスを使う方法を実現出来るのでしょうか?
>>577 出来ない。
設計見直せ。
何のためのnamespaceであり、何のためのクラスか知るべし
どうしても共通のインスタンスが必要ならば
途中で送信してしまった・・・
どうしても必要ならば
と思ったけど、もう
>>579 で答え出てるか・・・
ここってsage進行なんですか? よく分からないのでとりあえずsageで・・・ え〜と、質問なのですが VC++.NETでMC++でコード書いてるのですが 今までSDKでやってたので、.NETではウインドウプロシージャはどうなってるのでしょうか? と言うのもWinsockのWSAAsyncSelect()を使いたくて、メッセージを受信したいのです。
なんでVC++.NETがあるのにMSDNを読もうとしないんだろう
>>583 とりあえず半日調べての質問です。。。。
すみません、探し方が悪いとは思うんですが、キーワードも適切なのが見当付かずに・・・
>584 void System::Windows::Forms::Control::WndProc(Message* m); 次は、メッセージが定義されてないんですけど、とか訊くなよ
>581 素直に、グローバルな値はアンマネージドクラスで定義した方が早くない?
587 :
デフォルトの名無しさん :04/04/19 09:01
>> 576 VC++2005 のプロジェクトのプロパティにある、C++ のコマンドラインオプションに、 /clr を追加すれば、警告が出てくるが、/clr:oldSyntax を上書きしてくれる。 それがいやなら、「use managed 〜」のチェックをはずす。
>587
Thx. チェック外して自前でコマンドラインに追加するっす
しかし、
>>553 以外の C++/CLI のちゃんとした構文ドキュメントってどっかにないかねぇ
>>588 「Use Managed 〜」のチェックをはずすと、
コマンドラインで取り込んでいるモノがすべて消えるので注意。
メモして自前で記述する。
>590 りょうかいです プロパティもとはちょっと変わるんだねぇ ref class R { private: int size_; public: property int Size { int get() { return size_; } void set(int val) { size_ = val; } } };
>589 これは ISO C++ のワーキング・グループがまとめた C++/CLI の説明らすぃ 今回の Whidbey でどこまで実装されてるかチェックしてみます
>593 おおう、おおむねこのリスト通りであることを確認しますた ・ファイナライザ(M4.2) 未実装 ・プロパティ 機能を確認 ・インデックス・プロパティ(M4.2) 未実装 ・ref クラス内でのSTLコンテナの記述 マネージド型と非マネージド型の混在するmapが作れなかった stdcli はたぶんかなり先 ・delete ref 型に対する機能を確認 ・for each(M4.2) 未実装 ・marshal_as 未実装 ・native 型からの継承 未実装 ・static な operator (M4.1) 機能を確認 generic と template はまだ見てないです
ParamArray と 初期化時の new もまだですた void foo(array<Object^>^arr); // 可変長引数 ref class Foo { std::vector<int> *vec_; public: Foo() : vec_( new std::vector<int> ) { // 初期化時のnew } ~Foo() { delete vec_; } };
マネージクラスのポインタが作成できない。
ref class C { /* .. */ }; C ^ h = gcnew C; // OK (*h).do_something(); // OK C * p; // Compile Error sizeof( *h ); // Compile Error orz
598 :
デフォルトの名無しさん :04/04/23 02:10
独自にネイティブスレッド生成するアンマネージドなC++の コードをラップするマネージドなクラスを生成して、 マネージドコードなUIプログラムとリンクさせたアプリケーションを 作った場合、アンマネージドなスレッドの動作にGCコレクションを 割り込ませないようにすることは可能でしょうか? 例えばアンマネージドなスレッドを優先的に動かしたい場合 などです。
>598 具体的には何とも言えんが、用はネイティブなスレッドが起動している間はGCが 動いてその親であるマネージド型を回収してほしくないってこと? __pin しる __pin はアンマネージドが動いている間、対象となるオブジェクトをGCしないことを 保証してくれる
>596-597
これって、こういうもんだろってスルーしてたけど、マネージド型って C++/CLI では
ハンドル型として規定されて、クラス・インスタンスとは同等ではないから
>>597 の
振る舞いで問題はないと思う
アンマネージドなクラスがマネージド型を保持するときだけ、* でのポイントを認められて
いるけど、ネイティブとマネージド型の混在は M4 を通しての課題らしいから、まだ動いて
いないかと
>>599 __pinはメモリを移動しないって意味ですよね?
そうではなく、私が考えているシチュエーションは
1)優先度が高いアンマネージドなスレッドがアクティブな時に
GCが走り出さない保証があるか?
2)通常優先度のマネージドなコード実行中にGCが走り出した場合、
そこに優先度が高いアンマネージドなスレッドが割り込むことが
可能か?
ということです。helpみてるとGC中は(同一プロセス内の?)
全スレッドが中断されるみたいな記述があったようなきがした
のですが、これってアンマネージドなスレッドも含まれのでしょうか?
優先度の高い所だけプロセス分けるって手もあるんでしょうけど…。
>>600 でもなぁ、
>>589 のPDF みると、将来的には出来そうなんだよなぁ。
これが出来れば、T がマネージドなクラスかそうでないかをコンパイル時に
判定することも出来そうなので、なるべく早い段階で使えるようにしてほしい。
>601 実行モデルの問題ですね NativeスレッドとGCのどちらが優先度が高いのか、正直こんなとこで訊いてないで やってみればいいんでない、とか思わなくもないですが、ざっと調べた限り、CLRと Nativeの混合状態での実行モデルのようなものは見あたりませんですた つーことで、試してみました native スレッドは通常のプライオリティで、ひたすらミリセカンドまで表示し続け GC側はマネージド型を10000個作って、GC::Collect をかけます とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ セカンドですが、GC::Collectのタイミングでだいたい+30ミリセカンドぐらいです もちろん誤差も含んでますし、タイミングもあると思いますが、まぁ、COMでapart にしたほうがよろしいかと思います
>602 M4終了がいつかってことだよね。WGのタイムテーブルだと、C++/CLIの最終勧告が 2005年末ぐらいだから、構文とベース機能(nativeとmanagedの併存の実現)は今年 いっぱいぐらいじゃないのかなぁ 年末あたりにベータが出るかもね
>>603 >やってみればいいんでない
おっしゃる通りです。今夜にも同じようにして試してみます。
>とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ
うーん、残念です。ここら辺が保証されれば、私的にはmanaged C++最強!
なわけですが…。っていうか実行モデルの問題か。
まあ、windows上でTimeCriticalなアプリ組むのもどうかってのもあるけど。
わざわざ試して頂いて、ありがとうございました。
606 :
デフォルトの名無しさん :04/04/28 22:52
VC++.NET2003はC++の.NET環境が整ってきているのですが、デバッグ実行時の起動が超遅いです。 プロジェクトを新規作成して何もコードを書かずにデバッグ実行を開始しても、フォームが出てくるまで30秒ぐらい待たされます。 デバッグなしの実行ではすぐに出てくるのでデバッガの問題だと思うのですが。 2002の時も「Hello World」がコンソールに出てくるまでやはり30秒ぐらいかかります。 どなたか解決策をご存じないでしょうか? ちなみに環境はWinXPPro、AthlonMP2000+Dual、メモリ512MBです。 ノート(WinXPHome、PentiumM1.4GHz、メモリ512MB)や職場のPC(Win2k、Pentium4-2GHz、メモリ256MB)でも同様でした。 よろしくお願いします。
ウチは3秒だなあ アンチウイルスソフトとかつかってる?
おまえら何時までC++ なんか使ってるんだ? 馬鹿だろ?さっさと死ねよ
610 :
デフォルトの名無しさん :04/05/21 01:50
ウチも遅いです。 なんか大量にモジュールをロードしてる感じ。 ナニカ常駐させれば速くなるのかな?
>610 2002 の時はそうだったが、2003 になってからは感じなくなった 当時も環境の問題だろうと言われて、消えていったんだが、マルチポストのスレ違い を相手にしないでくれ いい感じに沈んでたのに
>607 です 自己解決しました。デバッグモードを「自動」ではなく「マネージのみ」にすると早くなりました。デバッグも出来るみたいです。お騒がせしました。
614 :
デフォルトの名無しさん :04/05/23 21:26
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) { int a; a=atoi(textBox1->Text); } error C2664 'atoi' 1番目の引数を'System::String __gc*'から'const char*'に変換できません。 フォーム上のボタン button1 をクリックしたら textBox1 の text プロパティを数値に変換したいのです デザイン時 text="10"です
>614 上げないで欲しいんだが・・・ 文字列の変換はユーティリティを利用する #include<vcclr.h> と宣言して、 wchar_t __pin *pRawString = PtrToStringChars(textBox1->Text); これで、ワイド文字列になる。あとは、ワイド文字列に対応した wcstol を使って欲しい よく考えると、この文字列処理ってこのスレに書いたことがなかったなぁ
>615 あーっと、スマソ こっちだ wcstol −> _wtoi
>>615-616 遅レス&age申し訳ないです
今確かめました。修行してきます・・・
MSDN C++マネージ拡張の仕様
7.8 文字への直接アクセス
これ自分には勉強になりました
618 :
デフォルトの名無しさん :04/05/25 15:37
MSDN に VS2005 TP May 2004 来た。 C++ CLI はどこまで進んでいるんだろう…
皆さんの目から見るC#に対してのメリットってなんですか? 自分はVC++メインに使っていて、最近やっと.NET触ることになり調べてるんですが、C#も便利そうなんですが、テンプレート使えないので躊躇しています。 自分なりのメリットデメリットです。まだ本診ただけなので間違ってるところも多々あると思いますが ManagedC++ テンプレートつかえる。stl、boostなどになれたものには何よりも変えられん。 アンマネージとの共存がちょっとやりやすそう C# 記述がC++よりもすっきりする(個人的に) デリゲート、イベント使える
追加:C++の多重継承 ハンドルは間違いです...
>620 まず、MC++ に対する認識について、マネージドクラスに対してはまだテンプレートは あまり使えんです また、マネージド、アンマネージドの混合したクラスも作れんです だから、単純に言語としてのレベルでは C# の圧勝と言ってもいいと思います それで、C++/CLI とかで上で騒いでるわけですが ただ、アンマネージドなプログラムから、マネージドなクラス・ライブラリを摘み食うことが できるのは、MC++ の唯一最大の特権ではないでしょうか また、処理速度を必要とする部分を組むのに、アンマネージドで組んでマネージド側に ラップして機能を提供するという点を考えると、MC++ を避けて通れないと思っています どこでも継子扱いなんだけどね(´・ω・`)ショボーン
623 :
デフォルトの名無しさん :04/05/30 19:33
うーんだときついかも知れんです テンプレートはマネージドに対して少しは使えるんですか?
>623 言い忘れてたけど、できれば sage て アンマネージド・クラスで gcroot 使ってマネージド・クラスを持てば、アンマネージド・クラスに ついてはテンプレート使えるけど、現状の CLR 自体が Generics について拡張されるのを 待ってる状態だから すぐに仕事に使うんじゃなければ >589 でも読んで(*´Д`)ハァハァするがよしかと
627 :
デフォルトの名無しさん :04/05/31 13:03
自分がしたいこと 多重継承 リフレクション デリゲート テンプレートorGenerics ガベコレ アンマネージとの密接なやり取り ...2005年まで待つのか...いやほんとに2005年に出るのか?
ごめんなさいまたあげちゃいました...
Whidbey May 2004 基本的には M4.1 ベースでバグフィックスを進めたみたい 今回の Whidbey からはプロパティ上で /clr /clr:pure /clr:safe /clr:oldSyntax が設定できる ようになってた 後は、.Net FW は 2.0 ベースになってた
んで、次のような構文を実行しますた interface class IOut { String ^Result(void); }; value class SamVal : public IOut { public: String ^Result(void) override { return gcnew String("Sample value"); } }; generic <typename T> where T : IOut ref class Sample { public: void out() { T t; Console::WriteLine("Result : {0}", t->Result()); } }; void _tmain() { Sample<SamVals> ^sam = gcnew Sample<SamVals>; sam->out(); } Generics も順調そうです
SessionEnding を拾えないでいる・・・・C#で書くとうまくいくのだが・・・? どっかにサンプルころがってないかな?VC++.netのコード。
>631 CodeProject の C++ WebSrevice あたりで、あるんでない? この間、WebServices を作ってて、Application や Session にアクセスできることを 今更ながら知って感動していた いや、漏れが物知らずだったんだけどさ(´・ω・`)ショボーン
結局SessionEnding使わずにWndProcでやり過ごしたわ。あーすっきり
深く沈んでる(w ベータが出るまで話題がないなぁ と、保守
VC++2005 Express Beta 入れてみた 相変わらず、ファイナライザはない 相変わらず M4.1 らしい
ぬぅ。 boost::is_base_and_derived< System::Object, T > とかかけるようになるのはいったいいつになるのだ。
637 :
デフォルトの名無しさん :04/07/06 09:27
MC++以外の.NETのプロジェクトに C++,ATL,MC++で書いたライブラリをDLL化 しないで使うことって可能ですか? あとからexeとdllを一つにできるのでもいいです。
>637 無理
なあ、managed C++やろうと思っても良い書籍が見つからないんだがオススメある? やっぱMSDNライブラリしかない?
641 :
デフォルトの名無しさん :04/07/25 05:19
あげ
642 :
デフォルトの名無しさん :04/07/25 06:03
643 :
デフォルトの名無しさん :04/07/31 13:47
C# の params キーワードに対応するmanaged C++ での方法は、何を使えばよいのでしょうか?
>643 対応型 __gc[] じゃ駄目? params char[] だったら wchar_t __gc []
いえ、可変長メソッド引数なので、単なる __gc ではだめです。 何かしらの Attribute だと思うのですが、見つけられていません……。
えっと、 __gc[] で駄目だったの? __gc[] って array のガベージ型だと思うんだけど C# System.Console.WriteLine(string format, params object[] args) C++ System.Console.WriteLine(String *format, Object* arg __gc[]) ってなってるんだけど
解決しました。
ParamArrayAttribute でした。
MSDNの言語フィルタをVBにしたら気づきました。
>>646 その __gc は、単に managed 配列を表すだけの、省略可能な修飾子ですよ。
[ParamArrayAttribute] void Func(String *forms, Object * args[]) 具体的にはこんな感じになるのでしょうか?
引数に対する属性なので、この位置です。 void Func(String *forms, [ParamArray] Object * args[]) ただ、managed C++ だと、最後の引数以外につけてもエラーにならないんですね。 C# の params だとちゃんと怒られるのに……。
2005βにて。 ジェネリックテンプレート template <typename Interface> generic <typename Type> where Type : Interface public ref class GenericTemplate{ ・ ・ ・ } こんなのを書いたら怒られた。 コンパイラ君、無理言ってスマンカッタ
>650 ・・・そりゃ難かしいでしょう でも、できたらうれすぃ
>649 Whidbey のサンプルでは、C++/CLI ではこうなるらすぃ double average( [ParamArray] array<Int32>^ arr ); array は stdcli::language でサポートされるマネージド配列のクラス double average( [ParamArray] array<Object^>^ arr) で任意の Object お取得するようになるってことか
ざっと、アプリを作ってみますた。軽く注意するところは ・まず、第一に using namespace stdcli::language; ・配列の受け取りは array<型> ^ ・ハンドル型の NULL 初期化は nullptr を使う ・static 変数の初期化は static コンストラクタで行う ・普通のポインタ型を delete し忘れるな ・as の代わりに safe_cast<ハンドル ^> ・foreach はないので、stdcli::for_each を信じて待て という点でしょうか 感想としては、C# で組んでるのと変わらない気分になったです 速度も、WindowsForm で組む分には C# の方が起動は早いみたい まぁ、まだこれからだと思いますが
Stringの比較はCompare、CompareToメソッドを使うしかないの? if (Path::GetExtension(filename) == S".BIN")みたいに書きたいんだけど。
String は結局、CLI の型だから、Equals が用意されてる if ( Path::GetExtention(filename)->ToUpper()->Equals(S"BIN") ) って書けばいいかと == もちゃんと動いている気がするけど、念のために
C++/CLIって ぶっちゃけイケてる?
>>656 既存のライブラリを使いやすいという意味ではかなりいけてる。
まあ、MC++で Managed ラッパクラス作って、それを C# から使うのがベストな気がするが。
>656 C++ で .Net フレームワークを綺麗に使いたい。でも、__gc とかうっとうしい。という要望に 完全に応えている。ハンドル型とか最初は気になるけど、自動変数の気分で使い捨てる ことができる C# くらいに C++ が .Net フレームワークへの親和性を高めたものと感じる ここまで作りが違わないと、逆に C# でコード組む気がなくなるよ 後は、マネージド、アンマネージドの混在が実現できれば、言うこと無し 標準 C++ で組みたいときはそのまま組めばいいし、ふと、マネージドに繋げたいときは さっくりソース持ってきて纏め直して、ref つけるだけ ベータ・レベルのできばえとしては、べた褒めする まぁ、まだ、ベータだし、ってとこいっぱいあるけど
アスペクト指向的に、今までのC++ソースコードは何も書き換えずに 別ファイルからこのクラスは__gcにする、とかいう指定が出来るようになればいいな。
>662 なんか、できそうな気がする アセンブリに纏めるということを前提に、export するクラスを別ファイルでこのクラスは ハンドル型で扱えるようにすると指定しておいて、アセンブリにまとめるときに、対応する インターフェイス名を指定してマッピングし、旧来のソースをマネージド型として扱うという やり方なら作れるんじゃないかな
664 :
デフォルトの名無しさん :04/09/27 17:48:44
C#での BindingContext[dataSet1,"TableName"].Position++; はCPPでどう書くの?
>>663 そうすと、C#囲い込み戦略byM$が破綻するから、出来ない仕掛け。
>664 MSDN に書いてあるじゃねぇか BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1 >665 え? 自作すればいいだろ、これぐらい ファイルの対応表から、マネージド・ラッパのクラス吐いて、インターフェイスの実装再配置を 使って、アンマネージドなクラスにマッピングすればいいんだと思うが もしかして、それよりもずっと高度な話を言ってる?
MC++とC++/CLIの違いは記述の違いだけ? やれることに違いは無いのかな?
違いはいっぱいあるんだが、目に見えるところでは記述の違いだけだな 言語って、そういうものだろ?
>>669 まあそうですけどね。ただ、VJ++とCOMのシームレスな連携と
C++とCOMのあのメンドクささを、ただの記述の違いというには
個人的には違和感を感じます。あれぐらいの違いがあるのかなと。
>670
C++/CLI の最大の焦点は、マネージドとアンマネージドの2層化
MC++ ではCILヒープとヒップの層の分離ができていないために、総てが一緒くたに
new していた。だから、逆に何を削除するか、何をガベージに任せればいいのか
わからなくなっていた
MC++ はその試行錯誤の段階の言語といえる。管理を明確にし、型を分離し、配置位置を
ちゃんと意識しながらコーディングできるようにしたのが C++/CLI
そして、同時に標準 C++ の純粋性を保持しようとしている。また、継承関係でもマネージド
・非マネージド間での相互参照を許可する(予定。笑)設計になってる
これらを考えると、内部的にはかなり違っている。追加された表記は特にオブジェクトの
配置位置を明確にすることと、さりげに、C++ の抽象化への不満を解消するための
キーワードが多い
こんな感じで良い? まぁ、口で説明受けるより組んでみた方が良い
漏れの意見はちょっとヽ(´ー`)ノマンセー意見が過ぎると思う
ECMA 標準化 C++/CLI ドラフト
http://msdn.microsoft.com/visualc/homepageheadlines/ecma/default.aspx
672 :
デフォルトの名無しさん :04/10/15 20:28:07
VS2003、.net Framework 1.1を使っています。 自作のアイコンを作成してFormに適用しました。タスクバーにもアイコンが表示されています。 ところがXPにはタスクバーにアイコンが増えるとアイコンをまとめる機能があり、 これが働くとデフォルトのアイコンに戻ってしまいます。 たぶんフォームではなくアプリのアイコンを表示しているのだと思います。 アプリケーションに自作のアイコンを適用するにはどうすればよいのでしょうか? C#ではプロジェクトのプロパティにビルドという項目があってそこで指定できます。 しかしMC++にはこれがありません。app.icoを自作のアイコンで上書きしたところ、 app.rcの中も自作のアイコンに置き換わりましたが、上記の不具合はなおりませんでした。
解決しました。 app.icoを上書きすればよかったのですね…。 debugビルドでは反映されないので混乱してしまいました。
C#での BindingContext[dataSet1,"TableName"].Position++; が BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1 に化けるのか。 なんかどこかで見たような.... そうそう。C++Builder で Delphi のクラスを使うときも、こんな感じで記述が増えた。 同じことをやっているんだね...
>674 ただ単に、現状の C++/CLI では、インデックス・プロパティをサポートできていないから こうなってるだけなんでは? インデックス・プロパティに対応したら、 BindingContext[ds, L"Customers"]->Position = BindingContext[ds, L"Customers"]->Position + 1; になるでしょう。もっとも、+や++をわざわざオーバーロードする気がなさそうなんで あまりかわんないけど
プロパティのインクリメントに対応するだけでも、 BindingContext->get_Item( ds, "Customers" )->Position++; こんなにすっきり。
ふと思ったんだが、インクリぐらい対応してるんじゃないのか?
678 :
デフォルトの名無しさん :04/11/17 21:31:45
__gc なクラスをシングルトンにするにはどうしたらいいでしょうか? クラス変数はGCポインタをもてないので。
679 :
デフォルトの名無しさん :04/11/18 09:17:50
お願いだから、。NETでSTLやふつ〜の標準C/C++ライブラリ 使う方法教えてくれ。これなしでC++のプログラムをせいと いうわけじゃなかろ?
>678 Singleton クラスを一つ作って、gcroot でメンバを持たせたら? >679 C++/CLI が無事完成するのを待て ふつーのSTLや標準C++ライブラリしか使わないなら、マネージド拡張なしで作れば いいんでない? #pragma unmanaged 使ってさ 漏れ、boostをそれで使ってるよ
このスレも C++/CLI やろうぜ!! で立て直したら?
まだ、M4程度のベータだし、managed C++とスレ分けるまでもないから、このままで いいと思われ このペースじゃ2005 Mid のWhidbeyリリースまでに1000逝かんでしょ
683 :
デフォルトの名無しさん :04/11/22 15:01:25
C++/CLI のベータだが、気のせいか Dictionary<String ^, data ^> ^dic = gcnew Dictionary<String ^, data ^>; で作ったデータで、 String ^keyword = ... dic->ContainsKey(keyword) としたとき、データとして含まれているはずなのに引っかからないことがある (´-`).。oO(なんでだろう?)
685 :
デフォルトの名無しさん :04/12/08 00:20:12
interface class を継承したクラスまでインターフェイスになっちまうし。
686 :
age :04/12/08 14:42:12
この程度自前で実装できる上に、このスレと何の関係もない。
689 :
デフォルトの名無しさん :04/12/27 10:35:10
__gcを付けたクラスから__gcの無いクラスにコールバック先(デリゲートを使う?)を渡して __gcの無いクラスからコールバックをするにはどうしたらいいのでしょうか?
・delegateは__gcクラス ・__gcクラスを__nogcクラスで使うときはgcroot<>で囲む ポイントはこの二つ。コードに起こすとこんな感じ。 #include <gcroot.h> using namespace System; public __delegate void DD(String* message); __nogc class Nogc{ gcroot<DD*> my; public: void SetD( DD* m ){ my = m; } void CallD(){ my->Invoke( "ぬるぽ\n" ); } }; public __gc class Gc { public: void Func(String* message) { Console::WriteLine(message); } }; int main(){ Gc* c = new Gc; Nogc i; i.SetD( new DD( c, Gc::Func ) ); i.CallD(); return 0; }
>>690 レスありがとーー!
試してみます。報告は後ほど
692 :
デフォルトの名無しさん :04/12/27 14:40:47
>>690 ありがとうございました。
解決しそうです。
ちなみに何かいいMC++の書籍ありますか?
つーか こんなの使ってる奴いるのか? 正気か?
694 :
デフォルトの名無しさん :04/12/27 15:22:39
>>693 使わざるえない時もあるってもんさヽ( `Д´)ノ
>>692 俺はMSDNだけで済ませてる。
あとは過去ログ参照
>>693 俺だってC#とか使いてぇよ…orz
まぁ、デフォのC++よりは幾分マシ
696 :
デフォルトの名無しさん :04/12/28 14:38:31
AAA* aaa[]; public: __property ????? get_AddressList() { return aaa; } __property void set_AddressList(????? value) { aaa = value; } AAAクラスを配列で持ちたいので こんな感じでプロパティを宣言したいのですが うまくいきません。?????の所をどうしたらいいのでしょうか?
697 :
696 :04/12/28 14:48:30
自己解決(´Д`;)しました AAA* aaa[]; public: __property AAA* get_AAAList()[] { return aaa; } __property void set_AAAList(AAA* value[]) { aaa = value; } こうでした。 う〜ん、それにしてもgetの時の[]の位置って普通わからないよなぁ
>>697 戻り値をAAA*[]にして小一時間程悩むのは誰もが通る道だろうな。
C++/CLIが出るまでの我慢
__だらけで汚い言語ですね
過渡期のものだから。
ANSIで規格化されない限り、ずっとそのまま。
解析処理みたいなのをmc++でストックしとけば、ドトニート時代にも対応出来ますよね?
必要になるまでやらんでいいと思うが
C++/CLRが出るまでC#に退避することにしますた。
707 :
デフォルトの名無しさん :05/02/21 20:07:59
int をHex表示したいんですがどうやるんですか?
>>707 何に表示したいんだ?
まあ、とりあえず、標準出力なら
Console.Write("{0:x}", num);
string.Format ってのもあり。
・・・sprintf でも使ったら? C++/CLI だと (3).ToString("X"); とか
stringstream にマニュピレータ設定するのが C++ スタイルだろ。
711 :
707 :05/02/25 20:45:33
ありがとう。返事送れてごめん。
712 :
デフォルトの名無しさん :05/03/09 13:29:18
713 :
デフォルトの名無しさん :05/03/20 10:38:38
>712 日本語資料ならなんかGDNJで晒されてたぞ
715 :
デフォルトの名無しさん :05/03/20 19:35:34
Java VMで十分
意味不明
>717 CLR の事と間違えてんじゃねぇの? まぁ、CodeDOMあるから、C++の実行時解釈もできるけど
Cマガジンの特集記事がうんこなのか俺の頭がうんこなのかわかんないけど C++/CLIの追加機能の意味(というか用途)がわからんものが多いッス genericsとtemplateの使い分けはどうするんだとか interfaceは純粋仮想関数で事足りるんじゃねぇの?とか
俺も今回の Cマガ読んで、 C++/CLI を知ったんですが、機能追加しすぎで混乱しますね。 C++/CLI というから、C++に最低限の機能を追加したのかと思いきや、もう全然違う言語に感じます。 個人的には、ガベージコレクタだけで十分なんだが。(しかも、もっとシンプルな形で)
あの記事は機能紹介に詰め込みすぎて、C++/CLIの魅力を伝え切れていない気がするね
ポインタとハンドル、ヒープとCLIヒープ、そして、CLI経由での互換性、C++としての旧来の
ライブラリ互換性、コンパイル時展開されるテンプレートと、コンパイル時には生成型と
いう形で一次展開され実行時に正式に型に合わせた形で展開されるジェネリクス
基本的にはC++/CLIはC++に対するCLIのアドオンという位置づけをもっと明確に示して
説明するべきではなかったのかなぁと思われ
ぶっちゃけた話、JVMをJNI経由でC++から直接操作してるようなものだし
>>719 CLIの対応型を純粋仮想関数だけのネイティブ・クラスと混在させないために必要なんだよ
混合型だとC#やVBから呼べなくなるから
>>720 >>714 の8章を読んでみるといいよ。valueクラスのところとか、Javaに対する皮肉や
パフォーマンスに関する苦労がさりげなく感じ取れる(w
つまり.NETFrameWorkの枠組み(他の言語から呼び出せるとか) への対応が強化された って理解でいいのかな
ん。C++ユーザーにとって、C#が不要になるくらい親和性が高くなったというとこ
C#見捨てないで・・・
C#、君はいい言語だったが、君のお父上が悪いのだよ
まあ、1からの .NET アプリ開発だとやっぱりC#の方が綺麗だろ。
>>726 私はC++のポリシーの無さが限りなく心地よいのだが、それでも
確かに.netを用いた開発においてはC#の方がC++/CLIよりも開発
効率の点で勝っていることを認めざるを得ない。
Dから(CまたはC++)は利用できますか? 出来るとしたらそのときはmanagedC++使うんですか?
Beta2 まだかねぇ。結局、for each は採用されるのだろうか 正式な仕様が公表されていないから、実際にどうなっているのかWhidbeyで動かして 見ないとわからんと言うのは問題だな
731 :
デフォルトの名無しさん :2005/04/10(日) 11:09:19
これ、以前入れたら cl が実行時にセグ落ちするようになっちゃって、もとのBetaを 入れ直した憶えがある 構文が公開仕様に近いなら、試してみたいが・・・うーん ファイナライザとか実装されてる?
>> 724 C#はもうJIS規格になったよ。見捨てられないね。
フレームワークが標準で着いてくるようになってるけど まだ9x系使ってる人もいるからな…
さぁ、Beta2が楽しみだ。ファイナライザとインデックスド・プロパティ、混合型が 実現していますように ところで、正式な仕様はまだ公開されないのかねぇ
ん。ファイナライザの動作を確認 STL.NET はまだでしょう?
Beta2 にて ・インデックスド・プロパティ:動作 ・ファイナライザ:動作 ・パラメータ配列:動作 ・for each:動作 あとなんかあったっけ?
インスタンス時生成も動いた コンストラクタでこうするヤシ TestClazz() : _name(gcnew String(L"My Name")) { } 基本的な言語機能は出そろったのかな
イイネ
741 :
デフォルトの名無しさん :2005/04/21(木) 13:49:57
System::StringをLPSTRに変換したいのですが どうしたらいいでしょうか?
pin_ptr を使う array<wchar_t>^ arr = stringVal->ToArray(); pin_ptr<wchar_t> pptr = &arr[0]; で pptr を WideCharToMultiByte に wchar_t* として渡せばいい #include "windows.h" とライブラリの明示的リンクを忘れないこと
追加。おすすめとしては、基本的にWin32 APIを使う時はユニコードにしておいた方が 大抵のAPIはいちいちMBCSへの変換をかますことなく、pin_ptr を渡せるので そっちをお勧めする
744 :
デフォルトの名無しさん :2005/04/21(木) 17:28:14
>>742 stdcli::languageを使うにはどうしたらいいのでしょうか?
using namespace stdcli::languageと書いたのですがダメでした
何を参照すればいいのでしょうか?
えーっと、ごめん。Beta2だよね? Beta2 では pin_ptr や safe_cast, array<> は stdcli::language 宣言しなくても使えるように なったよ。だから、逆に宣言してはいけない(はず)
746 :
デフォルトの名無しさん :2005/04/21(木) 17:48:23
>>745 Beta2とかよくわからないです(´Д`;)
でも
array<wchar_t>^ arr = stringVal->ToArray();
を書いたら
error C2059: 構文エラー : '^'
error C2065: 'array' : 定義されていない識別子です。
ってエラーが出てしまいます。
それはもしかして、普通に managed C++ でしょうか。VisualStudio は 2005 ではない?
だったら、
>>615 なんだけど
748 :
デフォルトの名無しさん :2005/04/21(木) 18:03:41
>>747 多分普通のmanaged C++ なのかなぁ
Microsoft Visual Studio .NET 2003を使ってます。
>>615 を試した方がいいですかね?
できれば
>>615 を、もうすこし解説してもらえると助かります。
あ、思いっきり普通の managed C++ ですね。最近、C++/CLIで調子に乗ってたから managed C++ にはユーティリティ関数がいくつか用意されていて #include <vcclr.h> で使えるようになります。 あとは、 PtrToStringChars で System::String __gc * 型を LPCWSTR に変換して、それに WideCharToMultiByte を実行するって手順になります これでだいたい判るよね?
>>749 ありがとうございます(^∀^ヾ|
なんとか出来そうな感じがしてきました
751 :
デフォルトの名無しさん :2005/04/21(木) 19:42:41
MC++をデバックすると ウォッチで中身が確認できないのですが 解決方法ないでしょうか? *Microsoft Visual Studio .NET 2003を使ってます。
752 :
デフォルトの名無しさん :2005/04/22(金) 09:50:26
TRACEするか、System::Diagnostic::Trace 使うしかないんでないかい?
>>753 よくあることなの?
デバッカーが使えないのはなんとも不自由だ(´Д`;)
がんばります
C++/CLIって正式に出るのはいつなんだ? 今managedC++をやるべきか躊躇している。
ECMA標準化作業は本当は正式勧告は去年末の予定だったらしいが、3月まで延びた 実装はMSしかやっていないわけで、当然、VisualStudio 2005 の出荷待ち 仕事で必要なんだったら、MC++をやる以外に選択肢はないんだが、勉強程度だったら C++/CLIを押さえておく程度で問題はないんじゃないか
MC++とC++/CLIってどう違うの?
MC++をもちっと使いやすくして 文法を整えたのがC++/CLI
Beta2 の C++/CLI だが、 enum 型の背景型指定が効いていない気がして public enum class Width : double { Undefine = 0.0 }; とすると、コンパイル・エラーが出る おかしいなと思って調べてみたら、駄目じゃん、int 系の型しか背景型にならないとMSDNに 書いてあったorz public struct PaperSize { double Width; double Height; }; public enum class Paper : PaperSize { Ax = { 1000.0, 2000.0 } }; とかできると信じていたのに
さすがにenumは整数型だろうよ...
C++/CLIってC++の文法規則からだいぶ逸脱してるのかい?
既存のc++クラスのコードはそのまま使えるよ 追加分があるだけ
単純にライブラリの追加というよりは、文法にもメスを入れてるのか?
>760 いや、MS から手に入る去年の6月版ドラフトには float, double も可能と書いてある 奴ら実装で手を抜きやがった あ、いや、信じてるよ。正式リリース時にはちゃんと float や double も背景型に 指定できるって。__int64 まで対応しているから、エリア的には大丈夫なはずだし
>763 そりゃ、基本的な型だけでも参照型と値型の2種類。インターフェイスやデリゲート、属性も 増えてるんだから、文法にも手を入れないとキャストもできないだろ
VS2005にC++/CLIが含まれてるの?
>766 yes ここで出てる C++/CLI の話は、全部 VS 2005 Beta での話
C++/CLIも中途半端なリリースになっちまうんじゃないか?
VC++っていう名前がC++/CLIになるのけ?
VS2005は C++のexportには対応してくれてるのかな?
773 :
デフォルトの名無しさん :2005/06/03(金) 17:34:04
VS2005のスレから来ました。以下、知ってたら教えてください。 VS2005TSβ2、VC8で、共通言語ランタイムを有効にしてビルドした ものを 実行しようとすると、必要なDLL が無いと怒られました。 手動で.NET Frameworkの該当するフォルダにパスを通せば動く のですが、手でパス設定しなければならないものでしょうか? (そんなこと無いと思うのですが) 今までネイティブしかやってないので、勝手がわかりません… どなたかお願いします。
そのDLLが.NETのアセンブリならパスは不要だが、普通のDLLならパスが必要。 printfなどのc/c++の関数使っているならいくら/CLRでコンパイルしても 呼び出されるDLLはネイティブのものだからパスが必要になる。 具体的にはどのDLLが無いと出たのか書かないと答えられんよ。
>>774 返事ありがとう。
DLLはmsvcr80.dllでした(無記入スミマセン)
通したパスは
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
です。
printfは使っています。
>>774 くだんのプログラムですが、共通言語ランタイムを無効にして
ビルド&実行したときには特に問題は無いです。
このことは、ネイティブなDLLへのパスは通っているという
解釈になりませんか?
いや
共通言語ランタイム無効で次のオプションでコンパイルしてみ。 実行すると同じエラーが出るはず。 cl /MD xxx.cpp msvcr80.dllはマルチスレッド対応のランタイムルーチン。シングルスレッドモードの場合は不要。 /CLRの場合常にマルチスレッド対応であることが要求されるため暗黙に/MDが付加される。 VC++6.0用のものは、c:\windows\system32\msvcrt.dll にあるからパスは不要なのだ。 リリース版になったらインストール時にwindows\system32にコピーされるようなるのだと思う。
779 :
773 :2005/06/03(金) 19:06:01
>>778 元のプログラムがマルチスレッドプログラムなので /MT を使って
ビルドしています。 /MD 使ってビルドして実行したらハングするかも
(共通言語ランタイム無効の場合)
/CLRの時は、コード生成は/MDにしましたが(そうしないとコンパイルエラーが出る)、
それがdllが無いと言われる原因?
ちと混乱してきました。
1・/CLRをつける
2・/MT->/MDにする(共通言語ランタイムでは、MDでマルチスレッド対応なので問題なし)
3・msvcr80.dllが無いといわれる。
という流れですか? 結局回避するにはどうしたらいいのでしょう。
ちなみに、c:\windows\system32 の中には msvcr80d.dllだけありました。
msvcr80.dllを手でコピーしちゃえば問題なくなるのはわかりますが、
要はβ2では、msvcr80.dllを使うプログラムは、自分(VSの使い手)で
何とかせい、ということでしょうか?
>780 いや、明示的に printf なんて使ってるからそれじゃ駄目だろう >779 C ランタイム・ライブラリのBeta版をシステムに入れちゃいかんだろうさ モジュールの横に置いたら?
>>779 こちらのは前のバージョンなので違うのかもしれないが、
/clr のデフォルトは /MT になってるぞ。/MDは指定可能だが
/MLは不可になってる。/MTじゃエラーになるのかな?
/MT ならモジュールサイズはでかくなるがDLLは不要だ。
783 :
773 :2005/06/04(土) 01:00:46
>>781 msvcr80d.dll(デバッグ用?)のは知らない間にもう入ってました。
>>782 >/MTじゃエラーになるのかな?
β2だとコンパイルエラーになります。
784 :
773 :2005/06/04(土) 01:24:33
>>784 サイドバイサイドか、いよいよWin2000は切捨てかのう。
786 :
773 :2005/06/04(土) 12:55:37
>>785 XPSP2にVS2005をインストールして試してますが、
2000だとC++/CLIのランタイムはどうなるんでしょうね?
>786 別に変わらんでしょ。COMのサイド×サイドがない振る舞いをするだけで アセンブリのロードはCLRが管理するから、問題ないんじゃね?
msvcr80.dllはアセンブリじゃないんじゃないの?
789 :
773 :2005/06/05(日) 06:30:55
>>779 以下、勘違いでした。
>元のプログラムがマルチスレッドプログラムなので /MT を使って
>ビルドしています。 /MD 使ってビルドして実行したらハングするかも
/MLと勘違いしてた。 /MTを/MDにしてもハングする訳ないですね。
っていうか、VS2005って、/MLがなくなってるみたい。今気がついた…
スレ違いスミマセン
>788 DLL のロード順て、exe の位置が最優先でしょ 今まで通りサーチは PATH に従うだけで何か問題ある? mfc の DLL とかと同じ扱いすればいいんじゃねぇの
いいえ
> DLL のロード順て、exe の位置が最優先でしょ アホか
ん? MSDN の LoadLibrary には 1.アプリケーションのロード元ディレクトリ。 2.現在のディレクトリ。 3.Windows System ディレクトリ。32->16 4.Windows ディレクトリ。 5.PATH 環境変数にリストされたディレクトリ。 と、書かれているが違うの?
整理するとDLLは3種類ある。
1)普通のDLLは
>>793 のとおり、ただしWinXP以降Win32マニフェストで変更可能。
2)ActiveXのDLLはレジストリに登録されたパスからロードされる。Win32マニフェストで変更可能。
3)アセンブリのDLLはCLR管理で、少し端折るがGAC、codebase、exeの位置から相対パスで特定の
ルールで検索。codebaseはアセンブリマニフェストに相対パスで記録される。
(マニフェストも2種類あるのでアセンブリとWin32を接頭語として付けてみた。
マニュアル上の表記ではないがまったく別のものなので区別しないと混乱の元。)
managed c++, C++/CLIはすべてのDLLを使えるため1,2,3を意識しなきゃいかんということ。
msvcr80.dllは (1)なのでWin32マニフェストが機能しないWinXPより前のOSでは
>>793 のリストのどこかに配置しなければならない。
VS2005でコンパイルするとmsvcr80.dllはWin32マニフェストで指定されるため、XP以降は
Win32マニフェストをexeと同じ場所に置くか、Win32リソースとして埋め込むかすればよい。
まあこれじゃユーザーが混乱するのも仕方ないわな。
>794 だから、2kだと変わらんよね? msvc80.dll はネイティブだから exe の位置に置けば 特に変わらないよと逝っているんだが、なんで漏れが否定されているのかよく分からない(´・ω・`)
>>795 > DLL のロード順て、exe の位置が最優先でしょ
のDLLの部分がmsvc80.dllを指しているのか、DLL一般のことを言ってるのか
区別がつきづらかったのだと思うが、
>>792 が脳髄反射で反応してるのは確かだ。
.exeの位置最優先じゃないよ まったくこれだからカスどもは
なんかキレてるw
799 :
デフォルトの名無しさん :2005/06/12(日) 14:56:07
C++/CLIですがref value なクラスは定義部だけでなく実装のコードも含めて すべて *.h に書くのが普通なのでしょうか? (そもそも定義部と実装コードは分けられないようですが) VS2005を使うと*.hにコードがあり、#includeだけの*.cppが生成されます。 全部*.cppに書いても問題ないような気がしますがどうなのでしょうか。
編集んときに楽じゃん 事情がない限りは.hに書いたほうがいいんじゃね?
全部*.cppに書いても問題ない
インライン指定にチェック入れない限り、普通に分離して作成されるけど?
んなことたずねてないと思うけど。
804 :
799 :2005/06/13(月) 15:36:41
> (そもそも定義部と実装コードは分けられないようですが) の部分は誤りでした。実装コード側に定義部と同じnamespaceをつけるのを忘れて エラーが出ていました。C++クラスのテンプレートから作成した場合 802さんの おっしゃるとおりインラインかどうかを選択できました。 普通のC++のクラスでインラインを多用するとロードモジュールのサイズが 肥大化するので心配していたのですが、Managedクラスの場合はそういう問題は 起きないようで、インラインか否かは表記上の問題で生成されるロードモジュール に違いはでないようです。
C++/CLI めちゃくちゃ違和感ある。
みんななんて呼んでるの? しーぷらぷらしーえるあい?
しーしり
しぷぷすくり
>>810 何か後半中部の訳が変じゃない?(前半部と最後は良かったんだが...
>難解で洗練されていない構文を使用すると、開発プロセスにおける危険性が増大します。これは、フロントガラスの汚れや煙が自動車事故の危険性を高めるのと同じです。改訂されたデザインでは、磨き上げられた新品のフロントガラス並みに構文の透明性が向上しています。
ワロタ
>構文糖
>??
>const char* インスタンスに解決されていた解決が、あいまいとしてフラグされるようになりました。
>コンパイル時間ダウンキャスト
>構文糖 シンタックスシュガー
んなこたわかってるよ
managed C++って業務で使ったことある人いる? うち何件か企画はあったんだけど検討の結果全部C#になりました。
ライブラリとしてC#への接合部にMC++使ったよ メインとしてはとても使えないけど、旧来のルーチンをラップするにはベターな選択だ
C++/CLIの方に移るからね。managed C++は消えるでしょ。
名前はmanaged C++のほうがかっこいいよね
C++がCLIになっても、標準ライブラリィとかはどうなんだろう?
ネイティブに対しては変わらない。C++/CLI は特徴として、CLI 拡張を使わない限り 標準C++と変わらない 今までの STL はネイティブに対しては今まで通り使えるし、ref 型とかは STL.NETが 用意される
>820 spilit でパーサ使ってるが? アセンブリという概念が組み込まれてるので、テンプレートはちょっと実用範囲が低下するが アセンブリ内なら普通に使える ヘッダ取り込みなんて無様な真似はアセンブリ内で閉じておけと
あ・・・、spilit -> spirit ね
ref クラス内で ::EnumWindows() を使っており、 LPARAM に this ポインタを渡したいのですが、方法がわかりません。 こういうことはできない、またはすべきでなかったりするのでしょうか?
pin_ptr<LPARAM> current = this; EnumWindows(&func, current); で駄目なん?
レスありがとうございます。でもコンパイル通らなかったです ref class A { void Enum() { pin_ptr<A^> pinnedThis = &((A^)this); EnumWindows(func, (LPARAM)pinnedThis); } }; これなら通りました、ただちゃんと動いているのかは、まだ見てないのですけど・・・ しかし、 ref class A { static BOOL Enum(HWND h, LPARAM lp) { A* a = reinterpret_cast<A*>(lp); // <- 結局これができないので、 return 1; } }; どうしたものか、というところです this を渡しているのは、結局 HWND を自分に渡したいからで、 その辺を LPARAM に頼らない形で作ったほうがいいのかな、とも思っています と言っても static メンバを使うとかしか思いつかないのですけど、、、
えっと、 A* a = reinterpret_cast<A*>(lp); を A^ a = interior_ptr<A>(lp); では? まぁ、ネイティブのワーククラス作った方が簡単だと思うんだけど
ごめ。間違えた interior_ptr<A> a = lp; だね
自己レス、できました interior_ptr じゃないですけど、 GCHandle gch = GCHandle::Alloc(this); ::EnumWindows(enumProc, reinterpret_cast<LPARAM>(GCHandle::ToIntPtr(gch).ToPointer())); gch.Free(); コールバック先で A^ This = safe_cast<A^>(GCHandle::FromIntPtr(IntPtr(lp)).Target); This->hoge(hWnd); GCHandle なんてはじめて知りました。
質問です ref class 内で、windows.h などにある unmanaged の構造体を メンバにしようとすると、コンパイルエラーになってしまいますが こういうときは ref なしの class を作ってやるしかないのでしょうか
イベント呼び出しがC#からはうまくいくのにC++からだと失敗するのはなぜ? こんな感じのユーザコントロール作って、C#からFireEvent()呼ぶと正常。 COMでイベントが発生するとCEvents::OnEvent()が呼ばれる。ここまではOK で、そこからFireEvent()呼ぶとCOMEvent::OnEvent()呼び出しで System.ArgumentNullException : 値を Null にすることはできません。 VSでみるとCOMEvent::OnEvent()が<未定義の値>になってる public __gc class COMEvent:UserControl{ public: __delegate void EventDelegate(); __event EventDelegate* OnEvent; void FireEvent(){ OnEvent(); } }; class CEvents: public IDispatchImpl<IEvents,&IID_Events,&LIBID>, public CComObjectRoot { BEGIN_COM_MAP(CEvents) COM_INTERFACE_ENTRY(IEvents) END_COM_MAP() public: gcroot<COMEvent*> m_control; void STDMETHODCALLTYPE OnEvent(){ m_control->FireEvent(); } };
831 :
デフォルトの名無しさん :2005/07/11(月) 18:34:44
>829 ポインタを使えばいけるんじゃないかな? C++/CLI使ってないから見当はずれかもしれないけど
だったら答えるなよ
> だったら答えるなよ > だったら答えるなよ > だったら答えるなよ > だったら答えるなよ
>829 その通りです。そういったクラスは混合型と呼ばれ、将来拡張予定の機能です。 それまでは、別に管理クラスを作るか >831 の言う通り、IntPtrに new して 持たせてください
>830 gcroot<COMEvent*> m_control が null 値なんじゃね? いつ作ってんの?
836 :
829 :2005/07/11(月) 20:02:18
>830 >835 は間違えた。忘れてくり。 EventDelegate * の OnEvent はどこで生成してるの?
>836 追加ですが、.Net Framework 2.0 では IntPtr に加えてリファレンスカウンタなどの Ptr 型が 増えているので、それらを利用するのも手だと思われます System::Marshal 周りを探してみてください
839 :
850 :2005/07/12(火) 01:53:55
>837 このUserControlを使うC#コードで生成してます inst.OnEvent+=new EventDelegate(hoge); inst.FireEvent(); と書いてみるとここではちゃんと動くんですよね その後に発生するCOMイベントから CEvents::OnEvent()経由でFireEvent()がよばれて、そこだとうまくいかないんです 今ソースないので試せませんが純粋仮想関数でも似た結果だったような
>839 となると、やっぱり、m_control に値が入っていないような気がするんだけど、これって どの段階で生成されるオブジェクトなの? gcroot は非マネージド・オブジェクトがマネージド・オブジェクトを保持するエリアだよね だから、どこかで COMEvent のインスタンスが渡されていないといけないんだけど
841 :
850 :2005/07/12(火) 13:21:34
出来ました… たしかにm_controlに値を入れるメソッドを作るのは後回しにしたままでした m_controlに値が入ってなければm_control->FireEvent(); の時点で失敗するだろうという思い込みが原因でした ありがとうございました
C++/CLI の STL をいじってるんだけど、 vector<string^>^ a(gcnew vector<string^>^); 微妙な顔文字に見えてきて、微妙。
やめろw そういわれたら顔文字にしか見えなくなってきたじゃないか
844 :
デフォルトの名無しさん :2005/08/20(土) 12:50:33
Managed C++ってヘッダーに全部実装書くのが普通なの?
C++はメソッドのとかまだなんとついていけたけどC++/CLIとかBoost 入れるとややこしいのが出てくるとついていけない様な感じがして これから先のC++の印象が…。C#に逃げてしまいそう。 なんかいいH.P.ありませんか?
C#でいいじゃん。 ジェネリクスと無名関数オブジェクトがついた以上 C++をあえて使う意味は無くなったよ。
>あえて使う意味は無くなったよ。 C++よりもマイナーC丼にふさわしい形容。
C++/CLI にも無名デリゲートが( ゚д゚)ホスィ…
boost::function+boost::bind>>>>>delegate
( ゚д゚) 、ペッ boost::bind boost::lambda(・∀・)イイ!!
ぁあぁああああぉおぁあああMSマンセーーーーーーーー!!!!
>>850 そんな色物いらん
ただのシンタックス・シュガーで充分だから、匿名デリゲートがある方がいい
単純な比較やソートに使うだけだから
Draft 1.14 Aug 2005 が公開されているのを今更ながらに発見 全然追いつけないぉ
ActiveXでmanaged c++使えるの?
主語が逆だぞ
いや、正しいだろ。逆ならみんな答えてる
>>854 実際どうか、試してみないと何とも言えんから、自分でやれ
857 :
デフォルトの名無しさん :2005/10/22(土) 11:58:51
vs.net2003を買ってC#はある程度かけるようになったのですが 今度C++(学校にある環境はvc++ ver6)を勉強することになりました。 vs.net2003で選べるc++とvc++ ver6のc++って全然別物なのでしょうか? それとも家でvs.netでc++やっても勉強になるんでしょうか?
>>857 managed じゃなければいっしょ。
vs.net の c++ でも、managed を選ばなければ、vc6といっしょだよ。
>858 やったことないけど、プロジェクトのコンソールアプリでファイル名.cppにしてもWIN32API使えるんですか? 自分では、プロジェクトでコンソールアプリで.cならC言語、.cppならC++、 WIN32アプリやMFCならVCだという頭があったけど。
> コンソールアプリでファイル名.cppにしてもWIN32API使えるんですか 全然使える。 超使ってる。
VC6はC++の準拠度が古いと言うか明らかにおかしいので、細かい差異で苦労しそうではある
c#から、MC++でラップしたdllを使用したいのですが、 managedなdllを作る場合、コンパイルオプションはどのようにつければよいでしょうか? 以下のコードを"cl /clr /LD ***.cpp"というコマンドでコンパイルしても、managedなdllが作成できませんでした。 どなたかご教授お願いします。 class umgd { public : umgd() { } ~umgd() { } show() { printf( "test\n" ); } } __gc class mgd { public : mgd() { p_umgd = new umgd(); } ~mgd() { delete p_umgd; } show() { p_umgd->show(); } private : umgd *p_umgd; }
863 :
デフォルトの名無しさん :2005/11/17(木) 09:23:34
あげ忘れてた・・・age
プロジェクトの段階で選んでおけばいいだけ。
>>862 >__gc class mgd {
先頭にpublicが抜けてるだけでは。
LNK4243の問題が無ければP/Invokeよりこっちを使いたいよ。
866 :
862 :2005/11/17(木) 16:31:44
managed c++ってしょせんC++やってた人と C#やってた人が同居していちゃいちゃするの
868 :
862 :2005/11/17(木) 23:43:12
ご教授お願いします CHOCOAのCCAPIを使って.NETでBOTを作ろうと思っています MFCの時は登録されていたタイプライブラリからCOleDispatchDriverの派生クラスを自動生成し、 CreateDispatch("CHOCOA.Application");で対応するオブジェクトを得ることができたのですが… "参照の追加"で生成したdllにInterop::ChocoaLib::CHOCOAというクラスができて、 CHOCOA* chocoa = new CHOCOA(); とすると、このクラスはインタフェイスで生成することはできない、とコンパイルエラーが出ます。 で、隠しクラスっぽいCHOCOAClassというのが入っていたので、 CHOCOA* chocoa = new CHOCOAClass(); とすると、実行時に"DA21EA40-0A85-11D2-901F-00000E7C45FA"というCLSIDは見つからない、と言われました。 regeditでHKEY_CLASSES_ROOT\CHOCOA.Application\を見ると {F3052B65-0A50-11D2-901F-00000E7C45FA}となっているので、 どうもこの辺が合ってない気がするのですが… それで、このCLSIDでマネージクラスを生成すればどうにかなるんじゃないかと思うのですが、 どのようにしたら生成できるでしょうか?
870 :
デフォルトの名無しさん :2005/12/04(日) 21:41:37
すいません、一応ageておきます
>>869 つーかよ、それCOMとして登録されているDLLとInteropに追加したDLLが別もんなんでね?
参照で追加するとき、レジストリに登録されているCOMを指定してやったら?
>>871 えっと、その辺がよく分からんのです。。
正直言ってCOMの仕組みにはあまり自信がないので。。。
HKEY_CLASSES_ROOT\CLSID\{F3052B65-0A50-11D2-901F-00000E7C45FA}\ の下に
InprogHandler32 = ole32.dll
LocalServer32 = CHOCOAの絶対パス
ProgID = CHOCOA.Application
というキーがあったので、chocoa.exeを参照すればいいのかと思ったのですが、参照できませんでした。
他にそれっぽいライブラリ系のファイルは見当たらないです。
今はchocoa.tlbっていうタイプライブラリを使っています。MFCの時も一緒です。
ただMFCの時はCreateDispatchで"CHOCOA.Application"を指定できたものの、
.NETのほうではこれに相当する部分がないなぁ、という感じなのです。
参照の追加をするときにCOMを指定できるっしょ その時、COMの一覧の中から、CHOCOAを指定してやったらどう? どうも、そのタイプライブラリと、登録されているGUIDが一致してないようにしか 見えないんだけど
>>873 私も原因はGUIDの不一致だと思います。
で、そこのCOMの一覧にChocoaLibっていうのがあるんですが、
それを選択すると↑で言ったようになってしまうんです。。
「参照の追加・・・」でローカルサーバ(EXEサーバ)は追加できない、っていう問題が あったような気がするけど気のせいかもしれない。 tlbimp hoge.exe /out:hogeexe.dll とかしてinteropアッセンブリを手動で作ってみては?
>>875 ありがとうございます。ただ、やってみたところエラーでした。
>TlbImp error: The input file 'C:\Program Files (x86)\Local\CHOCOA\chocoa.exe' is
> not a valid type library
今タイプライブラリから生成されたアセンブリを逆アセして
CHOCOAClassのGUIDを書き換えて再アセンブルする
という方法を思いついたのですが、ちょっと怖いな。。
どうやら
>>876 の方法でできたようです!
何度もご返事くださった方、ありがとうございました。
これはタイプライブラリの生成時がアレだったということなのかなあ。。
878 :
デフォルトの名無しさん :2005/12/09(金) 17:16:46
VC++.NET2003 でVBなどから参照できるクラスライブラリ作成しております。 基本的には機嫌良く動いているのですが、同じクラスライブラリ内のクラスを 継承した派生クラスでデストラクタを記述しようとするとエラーが出ます。 継承関係のないクラスのデストラクタは成功します。 中身を空にしたりvirtual や void を付けたり取ったりしても同じです。 また普通にFormのプロジェクト内で作成したクラスの継承では問題ありません。 error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void (__thiscall*)(void *),void *)" (?__CxxCallUnwindDtor@@・・・・)" は未解決です。 クラスライブラリ内で継承したクラスにデストラクタをつけるにはどうしたらいいでしょうか?
879 :
878 :2005/12/12(月) 23:42:31
放置の模様ですので移動します。
放置というよりは、最近、mc++ を触っていないのでわからないんだよな 簡単なアプリでも起こせるの?
881 :
878 :2005/12/14(水) 17:26:38
オオー!レスが! えっと、肝心なことが漏れてたのですが、__gcクラスのデストラクタでエラーが出ます。 __gcをとるとエラーはなくなります。 ↓これでエラー再現しました。(クラスライブラリ(.NET)にて) // test.h #pragma once using namespace System; namespace test { public __gc class Class1 { public: ~Class1(){;} }; public __gc class Class2 : public Class1 { public: ~Class2(){;} }; }
>881 うーん・・・。手元の環境に2003を入れてないので、2005 英語版で試してみたんだけど /clr:oldSyntax でコンパイル namespace DestOrth { public __gc class Class1 { public: Class1() { } virtual ~Class1() { } }; public __gc class Class2 : public Class1 { public: Class2() { } virtual ~Class2() { } }; } これちゃんとコンパイルできたよ? リンク時にトラぶってるのかな
884 :
878 :2005/12/15(木) 02:27:16
私も気になっています。 VC++では実装はヘッダーファイルに書くことが多いのでしょうか? クラスライブラリかWindowsフォーム(.NET)か によっても違うのかもしれませんが。。
実装をヘッダーファイルに書くというイディオムが存在する。 名前は忘れたけど。
うる覚えなんだが、むかーし、mc++ で空の cpp を使っているとトラブった記憶がある メソッド増やして実装を入れたらコンパイルできるようになった気がする
>VC++では実装はヘッダーファイルに書くことが多いのでしょうか? STLなんかは全部ヘッダーなんでわ? >イディオムが存在する。 名前は忘れたけど。 名前があるのは知らなかった。知りたいお。
>>888 >STLなんかは全部ヘッダーなんでわ?
違うよ。C++用のlibファイルが存在する時点で気づこう。
>>889 iostreamとかlocale関係はたしかにlibファイルが使われているだろうが,
俺が一般的だと思う意味でのSTLの部分はヘッダに全て実装されている。
(コンテナ・アルゴリズム・イテレータ・関数オブジェクトなど)
まぁ、STLっていう言葉自体、規格上の正式な用語ではないからね。
じゃあこうしよう。 WTLは全部ヘッダーだ
っていうかtemplateやるならヘッダーファイルになるんじゃ?
共通実装がlibにはいってるんじゃなかろうか
俺が思うにiostreamはcharとwchar_tで明示的実体化したものがライブラリに入っているのではないかと思う。
>>890 SGIのオリジナルSTLはそうだね。
STLportやgccのlibstdc++のSTL部分は*.cもある。
やっぱ基本は.hだおね。 でも、自分のソースは.hに全部入れると読み難い。
へー。なるほど。 じゃ、hファイルに書くかcppファイルに書くかって どこらへんで判断してるのでしょう。。 簡単には切り分けられない?
だから、クラス宣言以外、つまりクラスの実装部は全部.cppに入れると書きやすいんじゃないの? 言語仕様的には.hに書くのが推奨なんだろうけど。
>>890 本当にそう思うなら、C++のlibとリンクせずにvectorを使ってみてくれ。
890じゃないけど、、、
>>900 C++の文法から逝って論理的に可能。
だからといって、わざわざレスするためにテストしる!というのは如何なものかと。
>>901 結論からいうよ。無理なんだよ。
メモリのアロケーションに関する部分がライブラリ依存なの。
「論理的に可能」とか意味不明なこと書くな。
論理的って何だ?まずは、そこから教えろ。
メモリのアロケーションがlibだからって、 STLがcppも必要だとは如何なものかと。
ライブラリ依存を.hに絶対入れることが出来ないわけじゃないお。
>>899 言語仕様的には.hにすべて書くのが「推奨」なのでしょうか?
>>902 実際に試してみたらたしかにCのライブラリ(libc.lib)が必要だった。
どうやらメモリ関係にスタートアップルーチンと例外処理などがCRTを必要とするようだ。
(メモリ確保だけは自分でAllocatorを書けば済むが)
しかし、たしかにC++のライブラリ(libcp.lib)は不要にできた。
length_errorがstd::stringを使っているのが問題だったがこうして回避した。だめか?
#define _STDEXCEPT_
namespace std
{
class length_error
{
public:
template<typename T>
length_error(T)
{
}
};
}
#include <vector>
>>898 libstdc++なんかはかなり恣意的。基準があるとは到底思えない。
自分は全部.hに書く流儀。
別途プロトタイプ宣言書くのが面倒と言うだけの理由。
最初にオリジナルSTLを見たときはかなりビビッた。
あんな大きいクラスライブラリで全部.hなのは始めてみたので。
けど今は心配するのはよして、.hを愛するようになった。
お陰で、プリコンパイルヘッダの有り難みを身に染みて感じるようになった。
C++アンマネージ拡張 ってのがあると聞いたんだが、誰か知ってる人いますか?
>>909 VC++用に書いたclassがMC++から呼び出せる。
具体例はヘルプにすんごく分かりやすいサンプルが載ってるからそれを見るべし。
猫でも〜は辛うじてGDI+のところでC++でないとコンパイルできないプログラムを作っているな。
912 :
デフォルトの名無しさん :2006/02/04(土) 18:04:19
.Net 2005は出たばっかだから、業務にはちょっと…。 ということで、やっとこさっとこ、.Net2003に移行。いままで、V6だったからなぁ…。 manage C++ に初挑戦ですよ。
>>913 悪いことは言わん、VS2005に上げてC++/CLIに取り組め。
>>914 なんで?
それって、説得できる情報がないと、みんな動いてくれないんだよね。
出たばかりだと情報も少ない事が分かってるからね。バグもしかり。
納得できる回答を望む。
逆に何故今managed C++なの? 納得できる回答を望む。
>>916 >.Net 2005は出たばっかだから、業務にはちょっと…。
回答は出てるだろ?
>>915 managed C++の欠点。
キーワードが下線ばかりで汚い。
デストラクタの発動がC#と同じGCされるとき。
マネージオブジェクトはnewしないと作れない。
マネージオブジェクトに対して演算子多重定義が使えない。
>>918 つまり、言語仕様が少し古い…と言うことなだけか? CLIの方が洗練されていると言うだけ?
コード書くだけがプロジェクトじゃないから、そんなことはとても些細なことだな。
そんな答えで、納得できるヤツはバイト君ぐらいなモンだ。
出直せ。
C++/CLIはこれからの言語だけど Managed C++はいつ切り捨てられるかわからない言語
でも、仕事では金が絡むからな。切り捨てられても、.Net2004を使っていれば問題ない。 つーか、まだVC6が現役なところも変えず多くあるんだぞ? 少なくとも、サービスパックが複数出てからじゃないと C++/CLIには移行できないよ。
枯れる前に摘まれちゃったManaged C++に敢えて行く理由がよくわからないな。 C++/CLIが枯れるまでVC++6.0でいいじゃない。
managed C++は、将来バグフィックスされるかどうかもわからないのに、 > 切り捨てられても、.Net2004を使っていれば問題ない。 なんて良く言えるね。どっちも調査だけで業務はスルーしとけよ。
>>923 .Netはライブラリとして、多機能。
話を誤解してるな。
.Net2004でクオリティをクリアしたアプリをメンテナンスするには.Net2004を使い続ければよい。
ということだ。
バグフィックスされることより、バグを避けられることが重要。
その点、manage C++ は情報がある。
managed C++にバグがあったとしても、できあがった製品のクオリティと運用に問題がなければ、
そのバグは存在しようがしまいが、問題ない。
何この馬鹿?
釣れた!
学生はクソして C++/CLIとかいうヤツに必死になってればぁ?
そもそも.Net 2004とは何?
929 :
デフォルトの名無しさん :2006/02/06(月) 20:00:58
釣れた!
で、manage c++から C# を呼び出すってのはどうやんだ?
>>931 参照設定(#usingやプロジェクトのプロパティから)
マーシャリングの必要もないのか?
いらん
つまり、C#のクラスを manage C++からは参照設定でOK。 んじゃ、unmanage C++からは?
CLRHosting
自分で調べようとしないおまえには無理だろう
何だ、そりゃ? ブルーワーカーが板についたご回答だな。 しかし、C#側でメモリマネージャから特別扱いしてもらうような、指定は出来ねーのか?
・・・(゚Д゚)ハァ?
unmanage C++から呼ぶには やっぱCOMでしょ
COMなんてめんどくせーコトしなきゃ、呼べねーのか?
C++とCOMは異常に相性が悪い。
2005は最適化がクソだからなぁ。バグも派手に出てるし。 今はまた、2003が正解。
943とCOMは異常に相性が悪い。
市滅したCOMと相性が良い人って誰?
DONBOX
SOAPも DONBOXが絡んでるんだよな…。 おかげで…。Toolkitは最悪だったんじゃないかと想像。
COMって無駄にメモリを消費する希ガス
.NETよりましだろ
953 :
デフォルトの名無しさん :2006/03/15(水) 00:02:20
.NETはいいものだ ライブラリはいいぞ
ただのクラスライブラリだろ? とんでもMFC使わされてたやつとかブビチュウが良いものと思うだけで別にふつー。
Gehandhabtes C++
ただ、マーシャリングが非常に面倒。 managedは遅いから極力使わないようにしてるし。
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
新手のウィルスか?
959 :
878 :2006/04/20(木) 00:35:35
クラスライブラリ作成時に、継承関係にあるクラスにデストラクタを 実装するとリンクエラーがでてビルドできない現象がようやく解決しました。 結論から申しますと msvcrt.lib をリンクすることで解決しました。 実は、半年近くデストラクタはあきらめた状態でいたのですが、 今度は new や delete でも 未解決シンボル のリンクエラーが出て 再度調べたところ、msvcrt.libにたどり着き、これで、デストラクタも 解決できてしまいました。 ちなみに ヘッダファイルにすべて実装する、というのは見当違いでした。
VC++.NET2003でmanaged をやっています。 とあるプロジェクト内で、サブのForm Classを新規作成したのですが、名前空間を 入れ子にするとデザイナでエラーが出てフォームが表示されなくなります。 (このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした) コンパイル/リンクは問題なく行われ、実行時のエラーも出ずに、作成したFormを表示もできます。 デザイナの問題と思われます。 これを回避できる策に心当たりある方がおられましたら、ご教示願います。
961 :
960 :2006/06/13(火) 01:39:42
こんな感じ。 namespaceを入れ子にしなければ、名前を変更しても デザイナで表示もできるのです。 namespace AAA{ namespace BBB{ public __gc class Test : public System::Windows::Forms::Form { (略) }; } }
私は今C#でプログラムをしています。string型の二次元配列使用時、 値が入ってないとき「未定義の値」と表示。値が入って無い場合の チェック文をそのまま素通りしてしまう。この場合の対処策を ご教授願います。以下にそのコードの内容を書いておきます。 string[][] st = new string[][]; st = new string[10][]; この後、ループで各要素にメモリーを持たせ、値を入れる。 値が入ってないかを見る条件分は以下の通り。 if(st[i][y] != null && st[i][y] != "") ふみぱいんより。
>>962 >私は今C#でプログラムをしています。
日本語が不自由な方のようですが、ここはその質問に適当な場所ではありません。他をあたりましょう。
>>963 日本語の不自由な方っぽいけど、誘導先も書いてあげようよ。
C# と Managed C++ は別。C# でスレ検索かけろ、くらいでいいから。
つ ふらっとC♯(初心者用) Part8
966 :
デフォルトの名無しさん :2006/07/21(金) 02:54:39
人少ないと思たら、案外みてるんかな。 みんな、CLIに移行したんかなぁ。 CLIがいやでmanagedにこだわってる人っている? 二重下線が汚いという理由をよく聞くけど、 ^ とか ^>^(顔文字) とか gcnewとかのが俺はいや。 暗黙のbox化なんかも余計なお世話って感じ。(でも、なれたら後戻りできなくなるかも)。 んなとこ変えるくらいなら @"c:\hoge\" + fileName + ".txt" とか装備してほしい(されてんの?) でも、探してた機能がFrameWork2.0で追加されましたとか最近よく出てきたし、 なんかいいことあるかも、みたいな期待感で、私もC++/CLIに移行する予定です。 ありがとう、managed !!
gc new
>>966 #define E(s) #s
E(C:\hoge\) + fileName + ".txt"
>>968 単純に"C:\hoge\" と展開されるので
>warning C4129: 'h' : エスケープ シーケンスとして正しく認識されませんでした。
が出る。
970 :
デフォルトの名無しさん :2006/07/23(日) 00:27:05
C++/CLI 今ダウンロードして実行したけど、Stringの+演算子は使えるみたいですね。 @"..." もサポートされてないし、>968もうまく動作しないけど。
971 :
968 :
2006/07/23(日) 00:54:38 うわ、ごめん。 \とかもエスケープしてくれるもんだと思っていた。 パスの区切りなら「大抵」スラッシュでもいけるからそっちへ逃げる方向で勘弁して。