managed C++ やろうぜ!!

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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 || ... )
がベストに近いかな?
少なくとも&&使うよりは良いと思われ。
2922:02/02/24 12:02
よく考えてみれば、自分の環境はいきなり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
>>40
練習あるべし。
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も名前が変わっているのですか??
51名無しさん♯:02/02/26 21:53
>>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
お前本当に古いバージョンを消したのかと、トイレに連れ込んでボコボコにしながら問詰めたい。
5956:02/02/26 23:10
あ、要る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の門の前に立った♪)
65仕様書無しさん:02/02/27 00:43
おおっ、いつの間にこんなスレが!
昔、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
>>37
gcroot
76デフォルトの名無しさん:02/02/27 21:28
>>73
You can use it
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ってどうなるの?
>>84
死滅しました
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?
9492:02/03/01 17:02
>93
>>CLRと全く関係無しに managed C++を使うものなの?
>CLRと関係なしに「C++を」使うことができる。
>CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
CLRを使わずに、「managed extensionをC++とともに」使うことはありえないですよね?

いや、83さんがx86ネイティブを非/clr時に吐けると書いているけど、
ここはmanaged C++スレなので、managedをCLR非利用時に使うことが
ありえるのか?と疑問に感じましたので。
つーかな、ファイル名そのものがある種のポインタなわけよ。
だから、94は、ポインタとポインタのポインタの説明って事さ。
9695:02/03/01 17:27
誤爆スマソ。
>>94
なるほど。僕としては、
「managedをCLR非利用時に使うことがありえるのか?」
っていう文章が文章として成り立っていない(managedっていう言葉はCLRと同義語だから)ので、??と思ったのでした。

あ、ちなみに83==93==thisってことで。
ちがーう。88==93==97。
99デフォルトの名無しさん:02/03/02 00:38
templateが使えて、GCもあればC#いらん。
C++プログラマーの長年の夢は叶えられた。
100100!:02/03/02 00:42
今だ100ゲット!
>99
ならD使え
しかし101は無視された!
しかし101は無視された!
しかし101は無視された!
10399:02/03/02 00:51
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のバカヤロー!!
113109:02/03/02 21:36
ごめん。
誤: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の起動を抑制すればいいんじゃない?
>>125
訳さんでもいいわい。
ttp://www.csl.mtu.edu/cs5311/www/quote.html
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わかってないね。
開発環境と関係あるわけがない。
133興味本位:02/03/04 11:18
ベタな質問でスマソ。
managed C++ソースコードの標準的な拡張子って.cppのままなんですか?

managed G++が出ないかなあ…(CLRが先か)
>133
そう。
135興味本位:02/03/04 13:24
thx
構文的にはC++にCLRを使うための機能を追加しただけだから.cppでいいのか。
136 :02/03/04 19:22
機能追加なら、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
[email protected]」からウィルスが添付されてきた・・・
よって晒し!
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 イッテヨシ" );
156155:02/03/22 13:38
あ、条件文間違えた。
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)
163159:02/03/24 05:19
で、デケェ・・・。
そんなもん、フリーソフトウェアにはつけることはできん。
やっぱふつーに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" ?
171C++歌劇派: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は開発対象でないので様子見。
184180:02/04/10 18:37
原因はこれです
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcerrLinkerErrorLNK2023.asp
だけど解決方法が分かりません。Link.exeに正しく
E:\Program Files\Microsoft Visual Studio .NET\Common7\IDE\msobj10.dll
を読み込ませる方法はないでしょうか?
185180:02/04/10 18:59
自己レス。
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をコンパイルできるのですか?
>>187
それなりに解けてる
190180:02/04/10 22:49
>>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で作成したものだろうが呼び出せるのと同じだよな。
195194:02/05/06 03:50
カーネルじゃなくてDLLの方がいいか。
196デフォルトの名無しさん:02/05/08 16:24
managed C++まじで分らん。誰か助けて!
>>196
やだ
>>196
C#やれ
>>196
質問書けよ。助けて!じゃわからん。
200デフォルトの名無しさん:02/05/08 17:54
managed C++でやれることは
unsafeキーワード使うことで
全てC#でできるんですか?
unsageって前はマネージドコードってことになってなかったっけ?
多重継承とかは?
>>202
それはそもそもmanaged c++にはない
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcManagedExtensionsSpec_1.htm
>>201
unsage = age
・アクセスと制御。
マネージ コードとアンマネージ コードを混在できるため、
下位レベルのアンマネージ 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よりも数十倍高速な仕組みを利用します。
210207:02/05/08 18:35
>>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
>>228
解決しました。どうもです。
230デフォルトの名無しさん:02/05/10 08:43
ところで普通のアプリに
・使用するDLLを#pragma comment(lib, "XXX.lib")と指定する。
・使用する.net frameworkのDLLをusing <XXX.dll>と指定する。
とこれだけでいいんでしょうか?

しかもやってて思ったのは::MessageBox関数みたいに#define
切られてるのはどうしようもないような気がしてきました。
System::Windows::Forms::MessageBoxWはありませんとか言われて・・・
>>230
dllなのに拡張子libとは?
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対応して保水
>>238
最強だね。それ。
今あるWindowsの.net frameworkと同等のmonoを作るだけで
最低でも10年はかかるんだろうなぁ。opensource is always late
なんてAlan Coxさんが言ってたけどまさにそんな感じか、、
241デフォルトの名無しさん:02/05/10 11:59
MC++やろうぜ!
242デフォルトの名無しさん :02/05/10 12:25
だれも盛り上げないから独り黙々と情報提供

【Essential Guide To Managed Extensions For C++】
http://www.amazon.com/exec/obidos/ASIN/1893115283/

【Managed C++ and .NET Development】
http://www.amazon.com/exec/obidos/ASIN/1590590333/

【Visual C++(r).NET Developer's Guide】
http://www.amazon.com/exec/obidos/ASIN/0072132817/

【Programming with Microsoft Visual C++ .NET, Sixth Edition (Core Reference)】
http://www.amazon.com/exec/obidos/ASIN/0735615497/

GotDotNetのMC++
http://www.gotdotnet.com/team/cplusplus/
http://www.gotdotnet.com/team/upgrade/c++.aspx

243デフォルトの名無しさん:02/05/10 12:35
一冊漏れてた
【Microsoft Visual C++ .NET Step by Step】
http://www.amazon.com/exec/obidos/ASIN/0735615675/

COMとの相互運用に関して特化した本
【.NET and COM: The Complete Interoperability Guide】
http://www.amazon.com/exec/obidos/ASIN/067232170X/

C++プログラマたるもの、内部について無知は許されない!
【Inside Microsoft .NET IL Assembler】
http://www.amazon.com/exec/obidos/ASIN/0735615470/

【Compiling for the .NET Common Language Runtime】
http://www.amazon.com/exec/obidos/ASIN/0130622966/

【Essential .NET: The Common Language Runtime (Volume 1)】
http://www.amazon.com/exec/obidos/ASIN/0201734117/

発売してないものも含まれているので注意してください。

それにしても思ったより少ない気もする・・・
>>243
これからでそ
245デフォルトの名無しさん:02/05/10 12:58
managed C++でILを吐かせることはできるんですか?
>>245
もちろん。そのための「M」ですから。
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の傘下で実行されます。
>>230
マクロを #undef するよろし。
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
*/
263262:02/05/13 17:17
IL的に面倒なことになってるのでちょっと修正。

  Form1()
  {
//   Size s(400, 300);
    System::Drawing::Size s(400, 300);

    this->Size = s;
  }
>>263
FormにSizeプロパティがあるのと関係?
265262:02/05/13 17:30
>>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++使っている人いますか?
>>272
お前のすぐ上
274login:Penguin:02/07/02 22:52
普通に使ってますがなにか?

っていいたいところなんだけど、
C#の方が便利だし綺麗だ。
これが現実。
275_:02/07/14 01:56
ちょっとややこしいよね。そこまでC++に愛着ないし・・・
276デフォルトの名無しさん:02/07/14 14:36
277_:02/07/14 15:16
なんかDOS→NTの時の3.1, 95みたいな香りがする。。。
278デフォルトの名無しさん:02/07/14 16:06
>>276
何だかなあ...
279あぼーん:あぼーん
あぼーん
280デフォルトの名無しさん:02/07/23 23:57
age
281デフォルトの名無しさん:02/07/26 02:01
盛り上がらんね
managed C++ってなんですか?って聞いていい?
>>282
VC++.NETに付いてるおまけ
>>283
ありがと。
>>284
それで納得するなよ。(w
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++ってなんですか?
まなげのじょうしき!
>>303
上げるための自作自演uzee
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
これ何?
>>318
ildasmをすごくしたやつ(w
必要なら自前で作るからイラネ
>>320
逆コンパイルしてくれるって知ってる?
もう次のコンパイラが出るわけだが・・・
323デフォルトの名無しさん:03/01/05 17:36
あげ
324IP記録実験:03/01/08 21:52
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


IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/
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
────────────────────────────
Yahooトップきました。

http://www.yahoo.co.jp/
あめぞうという昔旺盛を極めた掲示板は「誹謗・中傷・アダルトお断り」の文字を書き込んだ
事が原因の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 行きます。
365山崎渉:03/01/13 18:58
(^^)
 4nd
フォンドボー?
367山崎渉:03/01/15 18:12
(^^)
368デフォルトの名無しさん:03/01/19 12:48
緊急浮上!!
>>368
上げるならネタを出せ、無能者
370山崎渉:03/01/23 20:10
(^^)
371山崎渉:03/01/23 21:58
(^^)
なんでこのスレは厨房が多いんだ?
373デフォルトの名無しさん:03/01/30 06:24
あげ
>>373
上げるならネタを出せ、奴婢
/clr付けるとフツーのC++コードもILで吐かれるんですね
これってパフォーマンス上のペナルティはないんでしょうか
(インライン化を阻害するとか)
(1)全部managed(JIT様を信じる)
(2)__gcの絡むところだけを#pragma managedして、
残りは#pragma unmanagedにする
どっちがいいですかね
376デフォルトの名無しさん:03/03/12 21:50
age
>>376
上げるならネタを出せ、奴婢
もう一度・・・浮上するんだ!!
379デフォルトの名無しさん:03/03/15 01:03
勃起age
380デフォルトの名無しさん:03/03/15 14:55
381デフォルトの名無しさん:03/03/18 00:01
結局使ってる人はいないという,,,,,,,
>>381
MS社内開発者専用ツール
383デフォルトの名無しさん:03/04/06 00:47
VC++.NETのCD2枚目の
\Samples\VC\Extensibility\AppWizards
にコンソール用のアプリケーションウィザードと
ManagedC++WindowsFormのアプリケーションウィザードがある。

わざわざ別にしなくてもいいのに。
384山崎渉:03/04/17 15:40
(^^)
385山崎渉:03/04/20 04:23
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
386デフォルトの名無しさん:03/04/30 10:19
 
387デフォルトの名無しさん:03/05/26 12:34
WindowsFormデザイナキタ━━━━━(゚∀゚)━━━━━!!!!


388デフォルトの名無しさん:03/05/27 00:35
もまいらVS2003になってVC++でもフォームデザイナがついたのに
なんにもなしですか!!!!!
>>388
期待して良いのか?どうせまた裏切ら(ry
フォームデザイナ以外の変更点を知りたいんだが
どこにも書いてねえよ
>>391
それ以外にあるのか?
ANSI C++に98%対応したっていうのはどうなったんだ?
そりゃMC++とは関係ねえっしょ
MC++はポインタ使えるの?それじゃー意味ないっしょっていうつっこみは無しで。
恐ろしいことに、使える。
396394:03/05/27 01:13
>>395
回答ありがとう。
どうmanageするんだろうね。
>>396
見てみたほうが早い
398394:03/05/27 01:22
>>397
そうだね。イメージ的には荒馬慣らしって感じがする>まったくの想像。
JITが基本なのでスタックもヒープもそのままということ
インタプリタやJavaのようなものとは全く別物だよ
>>399
ヒープは別。
自分の中では「MC++はC#をC++風に味付けしたもので〜」という記事を
どこかで読んで以来、まったく興味を無くした経緯がある。
>>400
GCに任せるかどうかは選択できるわけじゃん。
>>401
「C#はMC++をJava風に味付け」の間違いではなくて?
>>403
いや、「まずC#が先にあって〜」みたいな切り口だった。
405山崎渉:03/05/28 12:42
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
沈みすぎage

>>404
まず.NETがあって、じゃないかなあ
小さな DLL だったら、
C# でラッパクラス作るよりも、
Managed C++ で書き直しちゃう方が早かった。
てか C# の DllImport うんちゃらがよう分からんですタイ。

Managed C++、思ったより使えそうな感触。
>>407
そのための MC++ です
日本語の参考書籍・・・無いよなあ・・・
無いっすねえ..

6800円かそこらの分厚い本で
VC++.NET 解説みたいなのんが有ったんで
チラっと眺めてみたんですが、
Manged C++ に関する記述は 20 ページかそこらだけ。
この厚さで... と涙せずにはいられませんでした。

つーか .NET と無関係な VC++ な記述が殆どを占めてて泣けた。
チラっと見ただけなんで間違ってるかも知れないけど。
410洗濯猫:03/06/02 15:20
初心者ですが、
MFCで作ったコードをマネージドに変換して
コンパイルして、
CRLで動くようにできますか?

またドキュメントビューアーキテクチャを
マネージドシープラで実現することは可能ですか?
411デフォルトの名無しさん:03/06/02 15:25
★クリックで救えるオマ○コがあるらしい★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
>>410
間にラッパークラスを挟めば可能
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などでもだめでした。。
415414:03/06/07 20:01
(LPNMHDR)m->LParam.ToPointer();
で出来ました。。
ほう。なるほど。
417デフォルトの名無しさん:03/06/20 18:29
.NET C++ でWindowsフォームアプリケーションでウィンドウメッセージを捕まえるにはどうすればいいでしょう?
解像度変更を検出したいんだけど・・・。
418417:03/06/20 18:50
[System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")]
void WndProc(Message* m) {
// ...
}
ヘルプにはFormでWndProcをオーバーライドすると書いてあるんですが、
オーバーライドすると' マネージ型で、仮想メソッドへのアクセシビリティを少なくすることはできません。」
とエラー吐かれます。
そもそも1行目の [System::Security... は何を意味するかと子一時間...
何で参照渡しをポインタにしているのか小一時間...
420417:03/06/20 19:35
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;}
};
424422(続き):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;
425422(続き):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;}
Quake II .NET
http://www.vertigosoftware.com/Quake2.htm

カコ(・∀・)イイ!
managed Age++
428デフォルトの名無しさん:03/07/18 23:54
マネージドなクラスをSTLのコンテナに入れることは、できないみたいだな。
429デフォルトの名無しさん:03/07/19 00:19
COBOLだけはガチ!
430428:03/07/20 12:09
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で型のチェックした方がいいと思うんだが。
435425:03/07/25 21:19
>>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
437山崎 渉:03/08/02 02: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+でどうなるのかは試してないです。
441山崎 渉:03/08/15 15:40
    (⌒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より柔軟だから
462461:03/12/05 16:13
と、思ったが何か違うな

そもそも、「managed C++は整数もかならず整数オブジェクトになる」んだっけ?
教えて Teach Me
463461:03/12/05 16:30
多少こんがらがったが、

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) だと思うよ

>>465
コンテキストに依存するのでは?
寂れてる様に見えるが見てる人はゼロでないのだな
>>466
そう書いたつもりが、そうなってなかった
宇都氏
>>467
そろそろ飼いならした人が増えてきてもいいんじゃないかなー
日本語の解説書が欲しいところ
>>469

出版社を探して自分で翻訳;-p
一冊全部MC++って、話題もつの?
473デフォルトの名無しさん:03/12/22 20:25
これはC++じゃないと思った。
474デフォルトの名無しさん:04/01/22 07:36
さすがに濃い内容ですなあ。
ttp://weblogs.asp.net/slippman/
>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の間違いです。
485483:04/01/31 21:37
またまたすみません。。。
>>480で書いたC#のコードと
>>483でやったコードの結果が違うようです。
一応、この文字列をUDPでサーバーへ転送するのですが
サーバー側でフフフという文字が大量に発生してしまいます。(\0が無い為?
何故このような事がおきるのでしょうか?
sprintf(buf2,"01%d\n %d\n\0",textBox1->Text,textBox2->Text);
こんな感じで\nを付けてみ
487483:04/02/01 00:16
>>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で表示したいのですが
型が違うため出来ません。
どのようにすればいいのでしょうか?
・どの行でエラーになってるのか
・エラーの詳細
を書け
491489:04/02/01 19:32
MessageBox(NULL, returnData, "", MB_OK);
ここで
error C2664: 'MessageBoxA' : 2 番目の引数を 'System::String __gc *' から 'LPCSTR' に変換できません
        マネージ型をアンマネージ型に変換できません。

です
492489:04/02/01 19:35
とりあえず
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 使え
>>515
__value struct V {
int i;
int r;
};
とか。
518C ◆dZiiJEl1F6 :04/02/10 16:22
>517
それはちゃんと参照渡ししてくれるの?
値渡しでは意味なさそうだが・・


>516-517
IsValue を入れると付くやつだよね?
これってマネージド型とは排他的だと思うんだけど
520519:04/02/10 16:46
マネージ型の基本事項、制限事項読んできた
('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 との親和性を深めてホスィ
530MaccroSoft:04/02/11 21:16
>>529
信じよされば巣食われる。
> ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w

だからC#使うんだよ。ECMA標準。もうすぐISO標準。
C++も、MFCによって成長した感があるから、あんまり変わんないや・・・

まぁ、漏れは趣味ではC、仕事ではJavaとCOBOL(過去の遺産w)だけどね。
C++ の template なんか C++ のプログラマの中でも
Visio より知名度が低かったりして。
>533
さすがにそれは・・・、Java も C# も template のありがたみがわかって回帰してるわけだし

C#の標準化ってCILも含めてなの? それとも言語仕様だけ?
文法だけ。CLI含まず。
>>534
MFC厨だとありえるが・・・
>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
547545:04/03/07 00:28
ありがと〜(^ー^)/
たすかりますた!!
ここはいいインターネットですね。
Win32 Platform SDKと.NET Framework SDKとは共存できないのでしょうか?
前者を入れた後に後者を入れると前者のドキュメントの目次等が表示できなく
なるのです。解決策等ご存知でしたら、ご教示願います。
>>548
漏れもそれなった。PSDK入れた後に.NETSDK1.1を入れたら。
とりあえず不具合はそこだけなので、そのまま放置してます。
素直にVS買えよ
551548:04/03/09 03:47
自己レスです。逆順でインストールしたら解決しました。
C++/CLI ってどこかに情報あるの?
Wedbey のところじゃ、__gc が ref になるとかSTLとの親和性が上がるとかの
断片的な情報しかないんだけど、ECMAに仕様を提出して標準化するって書いてあるから
今のうちにMC++との違いを認識しておきたいんだけど

とりあえず、ロードマップの日本語版
ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/roadmap.asp
553552:04/03/13 18:29
>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
まずはsageを覚えろ。
>>577
その次にシングルトンを覚えろ。
>>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 のちゃんとした構文ドキュメントってどっかにないかねぇ
589588:04/04/19 10:26
ttp://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1557.pdf
これは何の資料なんだろう。QuakeIIのソースを利用した調査かな
>>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 を通しての課題らしいから、まだ動いて
いないかと
601598:04/04/23 11:32
>>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の併存の実現)は今年
いっぱいぐらいじゃないのかなぁ

年末あたりにベータが出るかもね
605598:04/04/23 17:10
>>603
>やってみればいいんでない
おっしゃる通りです。今夜にも同じようにして試してみます。

>とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ
うーん、残念です。ここら辺が保証されれば、私的にはmanaged C++最強!
なわけですが…。っていうか実行モデルの問題か。
まあ、windows上でTimeCriticalなアプリ組むのもどうかってのもあるけど。

わざわざ試して頂いて、ありがとうございました。
606デフォルトの名無しさん:04/04/28 22:52
607しぃ:04/05/03 08:54
VC++.NET2003はC++の.NET環境が整ってきているのですが、デバッグ実行時の起動が超遅いです。
プロジェクトを新規作成して何もコードを書かずにデバッグ実行を開始しても、フォームが出てくるまで30秒ぐらい待たされます。
デバッグなしの実行ではすぐに出てくるのでデバッガの問題だと思うのですが。
2002の時も「Hello World」がコンソールに出てくるまでやはり30秒ぐらいかかります。
どなたか解決策をご存じないでしょうか?
ちなみに環境はWinXPPro、AthlonMP2000+Dual、メモリ512MBです。
ノート(WinXPHome、PentiumM1.4GHz、メモリ512MB)や職場のPC(Win2k、Pentium4-2GHz、メモリ256MB)でも同様でした。
よろしくお願いします。
ウチは3秒だなあ
アンチウイルスソフトとかつかってる?
609山本五十六:04/05/03 10:22
おまえら何時までC++ なんか使ってるんだ?
馬鹿だろ?さっさと死ねよ
610デフォルトの名無しさん:04/05/21 01:50
ウチも遅いです。
なんか大量にモジュールをロードしてる感じ。

ナニカ常駐させれば速くなるのかな?
>610
2002 の時はそうだったが、2003 になってからは感じなくなった
当時も環境の問題だろうと言われて、消えていったんだが、マルチポストのスレ違い
を相手にしないでくれ

いい感じに沈んでたのに
612しぃ:04/05/22 01:08
>607 です
自己解決しました。デバッグモードを「自動」ではなく「マネージのみ」にすると早くなりました。デバッグも出来るみたいです。お騒がせしました。
>>612
お礼すんのにあげんなァァァ
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 はどこまで進んでいるんだろう…
>618
こんな感じらしい
ttp://blogs.msdn.com/slippman/

もうしばらくしたら確認してみる
620149:04/05/30 15:39
皆さんの目から見るC#に対してのメリットってなんですか?
自分はVC++メインに使っていて、最近やっと.NET触ることになり調べてるんですが、C#も便利そうなんですが、テンプレート使えないので躊躇しています。
           
自分なりのメリットデメリットです。まだ本診ただけなので間違ってるところも多々あると思いますが
ManagedC++
 テンプレートつかえる。stl、boostなどになれたものには何よりも変えられん。
 アンマネージとの共存がちょっとやりやすそう
 
C#
 記述がC++よりもすっきりする(個人的に)
 デリゲート、イベント使える
621620:04/05/30 17:17
追加:C++の多重継承

ハンドルは間違いです...
>620

まず、MC++ に対する認識について、マネージドクラスに対してはまだテンプレートは
あまり使えんです
また、マネージド、アンマネージドの混合したクラスも作れんです
だから、単純に言語としてのレベルでは C# の圧勝と言ってもいいと思います
それで、C++/CLI とかで上で騒いでるわけですが

ただ、アンマネージドなプログラムから、マネージドなクラス・ライブラリを摘み食うことが
できるのは、MC++ の唯一最大の特権ではないでしょうか
また、処理速度を必要とする部分を組むのに、アンマネージドで組んでマネージド側に
ラップして機能を提供するという点を考えると、MC++ を避けて通れないと思っています

どこでも継子扱いなんだけどね(´・ω・`)ショボーン
623デフォルトの名無しさん:04/05/30 19:33
うーんだときついかも知れんです
テンプレートはマネージドに対して少しは使えるんですか?
>623
言い忘れてたけど、できれば sage て

アンマネージド・クラスで gcroot 使ってマネージド・クラスを持てば、アンマネージド・クラスに
ついてはテンプレート使えるけど、現状の CLR 自体が Generics について拡張されるのを
待ってる状態だから

すぐに仕事に使うんじゃなければ >589 でも読んで(*´Д`)ハァハァするがよしかと
>623

マネージド拡張の未サポート説明
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcManagedExtensionsSpec_25.asp

MSDN日本語ドキュメントにも付いてたはず
>>623
単純なSTLの利用程度だったら gcroot を使う方法がここにある
http://www.codeproject.com/managedcpp/
627デフォルトの名無しさん:04/05/31 13:03
自分がしたいこと

多重継承
リフレクション
デリゲート
テンプレートorGenerics
ガベコレ
アンマネージとの密接なやり取り

...2005年まで待つのか...いやほんとに2005年に出るのか?
628620,627:04/05/31 13:06
ごめんなさいまたあげちゃいました...
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ライブラリしかない?
>639
漏れはこれで勉強した。いい本かどうかは微妙

ttp://www.amazon.co.jp/exec/obidos/ASIN/1893115283/qid=1090330561/sr=1-4/ref=sr_1_10_4/249-9037969-2157104
641デフォルトの名無しさん:04/07/25 05:19
あげ
642デフォルトの名無しさん:04/07/25 06:03
>>639
洋書でいいなら"Programming with managed extensions for VISUAL C++ .NET" MS Press
http://www.amazon.com/exec/obidos/tg/detail/-/0735617244/qid=1090702738/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/103-7664091-4927863?v=glance&s=books&n=507846
もあるよ。ぜんぜん初心者向けじゃなく、C++ をMFCなどで使っている人が.NETを使いたい場合に読むって感じの内容。
なので、易しい解説などいらんから、がつーんと要点と詳細が欲しいという人向け。
643デフォルトの名無しさん:04/07/31 13:47
C# の params キーワードに対応するmanaged C++ での方法は、何を使えばよいのでしょうか?
>643

対応型 __gc[] じゃ駄目?

params char[] だったら wchar_t __gc []
645643:04/07/31 22:05
いえ、可変長メソッド引数なので、単なる __gc ではだめです。
何かしらの Attribute だと思うのですが、見つけられていません……。
えっと、 __gc[] で駄目だったの? __gc[] って array のガベージ型だと思うんだけど

C#
System.Console.WriteLine(string format, params object[] args)

C++
System.Console.WriteLine(String *format, Object* arg __gc[])

ってなってるんだけど

647643:04/07/31 23:15
解決しました。
ParamArrayAttribute でした。
MSDNの言語フィルタをVBにしたら気づきました。

>>646
その __gc は、単に managed 配列を表すだけの、省略可能な修飾子ですよ。
[ParamArrayAttribute]
void Func(String *forms, Object * args[])

具体的にはこんな感じになるのでしょうか?
649643:04/08/01 00:44
引数に対する属性なので、この位置です。
void Func(String *forms, [ParamArray] Object * args[])

ただ、managed C++ だと、最後の引数以外につけてもエラーにならないんですね。
C# の params だとちゃんと怒られるのに……。
650デフォルトの名無しさん:04/09/14 13:31:31
2005βにて。
ジェネリックテンプレート

template <typename Interface>
generic <typename Type> where Type : Interface
public ref class GenericTemplate{



}

こんなのを書いたら怒られた。
コンパイラ君、無理言ってスマンカッタ
651デフォルトの名無しさん:04/09/18 12:37:13
>650
・・・そりゃ難かしいでしょう
でも、できたらうれすぃ
652デフォルトの名無しさん:04/09/22 11:17:09
>649
Whidbey のサンプルでは、C++/CLI ではこうなるらすぃ

double average( [ParamArray] array<Int32>^ arr );

array は stdcli::language でサポートされるマネージド配列のクラス

double average( [ParamArray] array<Object^>^ arr)

で任意の Object お取得するようになるってことか
653デフォルトの名無しさん:04/09/22 11:49:33
ざっと、アプリを作ってみますた。軽く注意するところは

・まず、第一に using namespace stdcli::language;
・配列の受け取りは array<型> ^
・ハンドル型の NULL 初期化は nullptr を使う
・static 変数の初期化は static コンストラクタで行う
・普通のポインタ型を delete し忘れるな
・as の代わりに safe_cast<ハンドル ^>
・foreach はないので、stdcli::for_each を信じて待て

という点でしょうか

感想としては、C# で組んでるのと変わらない気分になったです
速度も、WindowsForm で組む分には C# の方が起動は早いみたい
まぁ、まだこれからだと思いますが
654デフォルトの名無しさん:04/09/23 01:02:50
Stringの比較はCompare、CompareToメソッドを使うしかないの?
if (Path::GetExtension(filename) == S".BIN")みたいに書きたいんだけど。
655デフォルトの名無しさん:04/09/23 12:04:40
String は結局、CLI の型だから、Equals が用意されてる

if ( Path::GetExtention(filename)->ToUpper()->Equals(S"BIN") )

って書けばいいかと

== もちゃんと動いている気がするけど、念のために
656デフォルトの名無しさん:04/09/26 01:33:52
C++/CLIって
ぶっちゃけイケてる?
657デフォルトの名無しさん:04/09/26 01:56:31
>>656
逝けてる
658デフォルトの名無しさん:04/09/26 01:57:26
>>656
既存のライブラリを使いやすいという意味ではかなりいけてる。

まあ、MC++で Managed ラッパクラス作って、それを C# から使うのがベストな気がするが。
659デフォルトの名無しさん:04/09/26 11:01:23
>656
C++ で .Net フレームワークを綺麗に使いたい。でも、__gc とかうっとうしい。という要望に
完全に応えている。ハンドル型とか最初は気になるけど、自動変数の気分で使い捨てる
ことができる

C# くらいに C++ が .Net フレームワークへの親和性を高めたものと感じる
ここまで作りが違わないと、逆に C# でコード組む気がなくなるよ
後は、マネージド、アンマネージドの混在が実現できれば、言うこと無し

標準 C++ で組みたいときはそのまま組めばいいし、ふと、マネージドに繋げたいときは
さっくりソース持ってきて纏め直して、ref つけるだけ
ベータ・レベルのできばえとしては、べた褒めする

まぁ、まだ、ベータだし、ってとこいっぱいあるけど
660デフォルトの名無しさん:04/09/26 21:39:46
STL.NET
http://msdn.microsoft.com/library/en-us/dnvs05/html/stl-netprimer.asp
いつだ、いつ追加されるんだぁ。少なくとも Beta1 にはなかった

ところで、匿名デリゲートのやり方がよくわからないんですが、できる?

List<String ^>^ loop_words = gcnew List<String^>;
loop_words->ForEach( ... ここに匿名 delegate を渡したい );

って、やりたい
チェックライト程度の処理をいちいちメソッドにしたくないんです

661デフォルトの名無しさん:04/09/26 21:58:40
662デフォルトの名無しさん:04/09/27 14:08:50
アスペクト指向的に、今までのC++ソースコードは何も書き換えずに
別ファイルからこのクラスは__gcにする、とかいう指定が出来るようになればいいな。
663デフォルトの名無しさん:04/09/27 14:39:49
>662
なんか、できそうな気がする

アセンブリに纏めるということを前提に、export するクラスを別ファイルでこのクラスは
ハンドル型で扱えるようにすると指定しておいて、アセンブリにまとめるときに、対応する
インターフェイス名を指定してマッピングし、旧来のソースをマネージド型として扱うという
やり方なら作れるんじゃないかな
664デフォルトの名無しさん:04/09/27 17:48:44
C#での
BindingContext[dataSet1,"TableName"].Position++;
はCPPでどう書くの?
665デフォルトの名無しさん:04/09/27 17:56:30
>>663
そうすと、C#囲い込み戦略byM$が破綻するから、出来ない仕掛け。
666デフォルトの名無しさん:04/09/27 18:06:17
>>665
ぜんぜん論理的じゃない。
667デフォルトの名無しさん:04/09/27 18:07:54
>664
MSDN に書いてあるじゃねぇか
BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1

>665
え? 自作すればいいだろ、これぐらい
ファイルの対応表から、マネージド・ラッパのクラス吐いて、インターフェイスの実装再配置を
使って、アンマネージドなクラスにマッピングすればいいんだと思うが
もしかして、それよりもずっと高度な話を言ってる?
668デフォルトの名無しさん:04/09/29 14:12:29
MC++とC++/CLIの違いは記述の違いだけ?
やれることに違いは無いのかな?
669デフォルトの名無しさん:04/09/29 16:03:13
違いはいっぱいあるんだが、目に見えるところでは記述の違いだけだな
言語って、そういうものだろ?
670デフォルトの名無しさん:04/09/29 18:33:10
>>669
まあそうですけどね。ただ、VJ++とCOMのシームレスな連携と
C++とCOMのあのメンドクささを、ただの記述の違いというには
個人的には違和感を感じます。あれぐらいの違いがあるのかなと。
671デフォルトの名無しさん:04/09/29 21:35:28
>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の中も自作のアイコンに置き換わりましたが、上記の不具合はなおりませんでした。
673672:04/10/18 22:01:22
解決しました。
app.icoを上書きすればよかったのですね…。
debugビルドでは反映されないので混乱してしまいました。
674デフォルトの名無しさん:04/10/19 10:24:57
C#での BindingContext[dataSet1,"TableName"].Position++;

BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1
に化けるのか。

なんかどこかで見たような....

そうそう。C++Builder で Delphi のクラスを使うときも、こんな感じで記述が増えた。
同じことをやっているんだね...
675デフォルトの名無しさん:04/10/19 11:49:37
>674
ただ単に、現状の C++/CLI では、インデックス・プロパティをサポートできていないから
こうなってるだけなんでは?

インデックス・プロパティに対応したら、

BindingContext[ds, L"Customers"]->Position = BindingContext[ds, L"Customers"]->Position + 1;

になるでしょう。もっとも、+や++をわざわざオーバーロードする気がなさそうなんで
あまりかわんないけど
676デフォルトの名無しさん:04/10/19 22:15:46
プロパティのインクリメントに対応するだけでも、
BindingContext->get_Item( ds, "Customers" )->Position++;
こんなにすっきり。
677デフォルトの名無しさん:04/10/20 14:31:07
ふと思ったんだが、インクリぐらい対応してるんじゃないのか?
678デフォルトの名無しさん:04/11/17 21:31:45
__gc なクラスをシングルトンにするにはどうしたらいいでしょうか?
クラス変数はGCポインタをもてないので。
679デフォルトの名無しさん:04/11/18 09:17:50
お願いだから、。NETでSTLやふつ〜の標準C/C++ライブラリ
使う方法教えてくれ。これなしでC++のプログラムをせいと
いうわけじゃなかろ?
680デフォルトの名無しさん:04/11/18 18:04:44
>678
Singleton クラスを一つ作って、gcroot でメンバを持たせたら?

>679
C++/CLI が無事完成するのを待て
ふつーのSTLや標準C++ライブラリしか使わないなら、マネージド拡張なしで作れば
いいんでない?
#pragma unmanaged 使ってさ

漏れ、boostをそれで使ってるよ
681デフォルトの名無しさん:04/11/18 21:34:23
このスレも C++/CLI やろうぜ!! で立て直したら?
682デフォルトの名無しさん:04/11/20 11:33:48
まだ、M4程度のベータだし、managed C++とスレ分けるまでもないから、このままで
いいと思われ
このペースじゃ2005 Mid のWhidbeyリリースまでに1000逝かんでしょ
683デフォルトの名無しさん:04/11/22 15:01:25
684デフォルトの名無しさん:04/12/04 16:51:53
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 を継承したクラスまでインターフェイスになっちまうし。
686age:04/12/08 14:42:12
>>679
Microsoft Visual C++ .Net 2003: Kick Start
http://www.amazon.co.jp/exec/obidos/ASIN/0672326000
を読むと何か参考になるかも。
687wonapi:04/12/08 15:03:02
WonAPI MRIMG32は、Microsoft MSIMG32.DLL と高い互換性を実現しました。

サンプル プログラムで動作を確認できる。

詳しくは、下の「WonAPI MRIMG32 トップページ」で最新情報をご確認を。

WonAPI MRIMG32 トップページ
http://f59.aaa.livedoor.jp/~wonapi/mrimg32/index.html
688デフォルトの名無しさん:04/12/08 17:26:56
この程度自前で実装できる上に、このスレと何の関係もない。
689デフォルトの名無しさん:04/12/27 10:35:10
__gcを付けたクラスから__gcの無いクラスにコールバック先(デリゲートを使う?)を渡して
__gcの無いクラスからコールバックをするにはどうしたらいいのでしょうか?
690デフォルトの名無しさん:04/12/27 11:53:34
・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;
}
691デフォルトの名無しさん:04/12/27 12:46:00
>>690
レスありがとーー!
試してみます。報告は後ほど
692デフォルトの名無しさん:04/12/27 14:40:47
>>690
ありがとうございました。
解決しそうです。

ちなみに何かいいMC++の書籍ありますか?
693デフォルトの名無しさん:04/12/27 15:10:02
つーか
こんなの使ってる奴いるのか?
正気か?
694デフォルトの名無しさん:04/12/27 15:22:39
>>693
使わざるえない時もあるってもんさヽ( `Д´)ノ
695デフォルトの名無しさん:04/12/27 15:30:37
>>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クラスを配列で持ちたいので
こんな感じでプロパティを宣言したいのですが
うまくいきません。?????の所をどうしたらいいのでしょうか?
697696:04/12/28 14:48:30
自己解決(´Д`;)しました


   AAA* aaa[];
public:
   __property AAA* get_AAAList()[] { return aaa; }
   __property void set_AAAList(AAA* value[]) { aaa = value; }

こうでした。
う〜ん、それにしてもgetの時の[]の位置って普通わからないよなぁ

698デフォルトの名無しさん:04/12/28 14:50:15
>>696
AAA* __gc[] だったかな。
699デフォルトの名無しさん:04/12/28 15:54:22
>>697
戻り値をAAA*[]にして小一時間程悩むのは誰もが通る道だろうな。
700デフォルトの名無しさん:04/12/28 20:22:18
C++/CLIが出るまでの我慢
701デフォルトの名無しさん:04/12/29 00:15:19
__だらけで汚い言語ですね
702デフォルトの名無しさん:04/12/29 08:50:41
過渡期のものだから。
703デフォルトの名無しさん:04/12/29 09:30:36
ANSIで規格化されない限り、ずっとそのまま。
704デフォルトの名無しさん:05/01/15 10:16:54
解析処理みたいなのをmc++でストックしとけば、ドトニート時代にも対応出来ますよね?
705デフォルトの名無しさん:05/01/15 10:56:58
必要になるまでやらんでいいと思うが
70669式フリーPG ◆hND3Lufios :05/02/14 21:35:52
C++/CLRが出るまでC#に退避することにしますた。
707デフォルトの名無しさん:05/02/21 20:07:59
int をHex表示したいんですがどうやるんですか?
708デフォルトの名無しさん:05/02/23 21:06:22
>>707
何に表示したいんだ?
まあ、とりあえず、標準出力なら
Console.Write("{0:x}", num);
string.Format ってのもあり。
709デフォルトの名無しさん:05/02/23 21:12:51
・・・sprintf でも使ったら?

C++/CLI だと
(3).ToString("X"); とか
710デフォルトの名無しさん:05/02/25 16:00:38
stringstream にマニュピレータ設定するのが C++ スタイルだろ。
711707:05/02/25 20:45:33
ありがとう。返事送れてごめん。
712デフォルトの名無しさん:05/03/09 13:29:18
このごろ C++/CLI の解説もかなり充実してきて勉強になる。英語で苦労だけど。

http://www.codeproject.com/managedcpp/
の "C++/CLI" 項目の記事はどれもいい。

S.B.リップマン氏の記事は必読。
前からある有名なやつが、>661 にあるので、
最近の MSDN Magazine の "Hello, C++/CLI" が、
http://msdn.microsoft.com/visualc/default.aspx?pull=/msdnmag/issues/05/02/purec/default.aspx
713デフォルトの名無しさん:05/03/20 10:38:38
S.B.リップマン氏の MSDN Magazine "Pure C++"、二本目でた。
"Generic Programming Under .NET"
http://msdn.microsoft.com/msdnmag/issues/05/04/PureC/
714デフォルトの名無しさん:05/03/20 18:07:41
>712
日本語資料ならなんかGDNJで晒されてたぞ
715デフォルトの名無しさん:05/03/20 19:35:34
716デフォルトの名無しさん:05/03/20 19:51:08
Java VMで十分
717デフォルトの名無しさん:05/03/20 23:41:36
意味不明
718デフォルトの名無しさん:2005/03/21(月) 11:43:09
>717
CLR の事と間違えてんじゃねぇの?
まぁ、CodeDOMあるから、C++の実行時解釈もできるけど
719デフォルトの名無しさん:2005/03/25(金) 22:46:04
Cマガジンの特集記事がうんこなのか俺の頭がうんこなのかわかんないけど
C++/CLIの追加機能の意味(というか用途)がわからんものが多いッス
genericsとtemplateの使い分けはどうするんだとか
interfaceは純粋仮想関数で事足りるんじゃねぇの?とか
720デフォルトの名無しさん:2005/03/26(土) 02:42:13
俺も今回の Cマガ読んで、 C++/CLI を知ったんですが、機能追加しすぎで混乱しますね。
C++/CLI というから、C++に最低限の機能を追加したのかと思いきや、もう全然違う言語に感じます。

個人的には、ガベージコレクタだけで十分なんだが。(しかも、もっとシンプルな形で)
721デフォルトの名無しさん:2005/03/26(土) 11:38:33
あの記事は機能紹介に詰め込みすぎて、C++/CLIの魅力を伝え切れていない気がするね

ポインタとハンドル、ヒープとCLIヒープ、そして、CLI経由での互換性、C++としての旧来の
ライブラリ互換性、コンパイル時展開されるテンプレートと、コンパイル時には生成型と
いう形で一次展開され実行時に正式に型に合わせた形で展開されるジェネリクス

基本的にはC++/CLIはC++に対するCLIのアドオンという位置づけをもっと明確に示して
説明するべきではなかったのかなぁと思われ

ぶっちゃけた話、JVMをJNI経由でC++から直接操作してるようなものだし

>>719
CLIの対応型を純粋仮想関数だけのネイティブ・クラスと混在させないために必要なんだよ
混合型だとC#やVBから呼べなくなるから

>>720
>>714 の8章を読んでみるといいよ。valueクラスのところとか、Javaに対する皮肉や
パフォーマンスに関する苦労がさりげなく感じ取れる(w
722デフォルトの名無しさん:2005/03/27(日) 23:46:32
つまり.NETFrameWorkの枠組み(他の言語から呼び出せるとか)
への対応が強化された

って理解でいいのかな
723デフォルトの名無しさん:2005/03/28(月) 00:34:09
ん。C++ユーザーにとって、C#が不要になるくらい親和性が高くなったというとこ
724デフォルトの名無しさん:2005/03/28(月) 21:31:57
C#見捨てないで・・・
725デフォルトの名無しさん:2005/03/29(火) 16:59:42
C#、君はいい言語だったが、君のお父上が悪いのだよ
726デフォルトの名無しさん:2005/03/29(火) 18:28:01
まあ、1からの .NET アプリ開発だとやっぱりC#の方が綺麗だろ。
727デフォルトの名無しさん:2005/03/30(水) 02:25:04
>>726
私はC++のポリシーの無さが限りなく心地よいのだが、それでも
確かに.netを用いた開発においてはC#の方がC++/CLIよりも開発
効率の点で勝っていることを認めざるを得ない。
728デフォルトの名無しさん:2005/03/31(木) 06:16:09
Dから(CまたはC++)は利用できますか?
出来るとしたらそのときはmanagedC++使うんですか?
729デフォルトの名無しさん:2005/03/31(木) 10:32:17
>728
D言語とMC++、C++/CLI には直接的な関係はありません
DからのC/C++関数呼び出しはこちらのスレで聞いてください

D言語 Part 6
http://pc8.2ch.net/test/read.cgi/tech/1109933426/
730デフォルトの名無しさん:2005/04/09(土) 22:31:08
Beta2 まだかねぇ。結局、for each は採用されるのだろうか
正式な仕様が公表されていないから、実際にどうなっているのかWhidbeyで動かして
見ないとわからんと言うのは問題だな
731デフォルトの名無しさん:2005/04/10(日) 11:09:19
for each は Beta1 でももう、Visual C++ 2005 Tools Refresh
でアップデートされたときから、サポートされてるよ。
http://www.microsoft.com/downloads/details.aspx?FamilyID=afd04ff1-9d16-439a-9a5e-e13eb0341923&displaylang=en
最初のバージョンとはかなり違って、公表されてる仕様に近くなってるから、
覚悟してアップデートするように。
732デフォルトの名無しさん:2005/04/10(日) 12:04:05
これ、以前入れたら cl が実行時にセグ落ちするようになっちゃって、もとのBetaを
入れ直した憶えがある
構文が公開仕様に近いなら、試してみたいが・・・うーん

ファイナライザとか実装されてる?
733デフォルトの名無しさん:2005/04/10(日) 17:02:26
>> 724
C#はもうJIS規格になったよ。見捨てられないね。
734デフォルトの名無しさん:2005/04/17(日) 08:13:50
フレームワークが標準で着いてくるようになってるけど
まだ9x系使ってる人もいるからな…
735デフォルトの名無しさん:2005/04/17(日) 08:51:22
さぁ、Beta2が楽しみだ。ファイナライザとインデックスド・プロパティ、混合型が
実現していますように

ところで、正式な仕様はまだ公開されないのかねぇ
736デフォルトの名無しさん:2005/04/19(火) 10:56:18
Beta2 が出たね。VS2005 のバージョンは、まだ MSDN 会員専用みたいだけど。
Express 版は一般向けに出てきた。
まあ、.NET Framework 2.0 SDK Beta2 さえインストールすれば、
C++/CLI の safe モード機能はすべて使えるはずだから、暇なときに入れとくことにするよ。
STL.NET が付くのはどれなのかな。
http://lab.msdn.microsoft.com/vs2005/downloads/default.aspx
737デフォルトの名無しさん:2005/04/19(火) 21:32:49
ん。ファイナライザの動作を確認

STL.NET はまだでしょう?
738デフォルトの名無しさん:2005/04/20(水) 11:21:09
Beta2 にて

・インデックスド・プロパティ:動作
・ファイナライザ:動作
・パラメータ配列:動作
・for each:動作

あとなんかあったっけ?
739デフォルトの名無しさん:2005/04/20(水) 11:26:34
インスタンス時生成も動いた

コンストラクタでこうするヤシ
TestClazz() : _name(gcnew String(L"My Name")) { }

基本的な言語機能は出そろったのかな
740デフォルトの名無しさん:2005/04/20(水) 12:21:15
イイネ
741デフォルトの名無しさん:2005/04/21(木) 13:49:57

System::StringをLPSTRに変換したいのですが
どうしたらいいでしょうか?
742デフォルトの名無しさん:2005/04/21(木) 14:11:22
pin_ptr を使う

array<wchar_t>^ arr = stringVal->ToArray();
pin_ptr<wchar_t> pptr = &arr[0];

で pptr を WideCharToMultiByte に wchar_t* として渡せばいい

#include "windows.h"
とライブラリの明示的リンクを忘れないこと
743デフォルトの名無しさん:2005/04/21(木) 14:19:33
追加。おすすめとしては、基本的にWin32 APIを使う時はユニコードにしておいた方が
大抵のAPIはいちいちMBCSへの変換をかますことなく、pin_ptr を渡せるので
そっちをお勧めする
744デフォルトの名無しさん:2005/04/21(木) 17:28:14
>>742
stdcli::languageを使うにはどうしたらいいのでしょうか?

using namespace stdcli::languageと書いたのですがダメでした
何を参照すればいいのでしょうか?
745デフォルトの名無しさん:2005/04/21(木) 17:39:01
えーっと、ごめん。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' : 定義されていない識別子です。

ってエラーが出てしまいます。
747デフォルトの名無しさん:2005/04/21(木) 17:59:31
それはもしかして、普通に managed C++ でしょうか。VisualStudio は 2005 ではない?
だったら、 >>615 なんだけど
748デフォルトの名無しさん:2005/04/21(木) 18:03:41
>>747
多分普通のmanaged C++ なのかなぁ
Microsoft Visual Studio .NET 2003を使ってます。

>>615を試した方がいいですかね?
できれば>>615を、もうすこし解説してもらえると助かります。
749デフォルトの名無しさん:2005/04/21(木) 18:19:41
あ、思いっきり普通の managed C++ ですね。最近、C++/CLIで調子に乗ってたから

managed C++ にはユーティリティ関数がいくつか用意されていて
#include <vcclr.h>
で使えるようになります。

あとは、
PtrToStringChars で System::String __gc * 型を LPCWSTR に変換して、それに
WideCharToMultiByte を実行するって手順になります

これでだいたい判るよね?
750デフォルトの名無しさん:2005/04/21(木) 18:22:00
>>749
ありがとうございます(^∀^ヾ|

なんとか出来そうな感じがしてきました
751デフォルトの名無しさん:2005/04/21(木) 19:42:41
MC++をデバックすると
ウォッチで中身が確認できないのですが
解決方法ないでしょうか?

*Microsoft Visual Studio .NET 2003を使ってます。
752デフォルトの名無しさん:2005/04/22(金) 09:50:26
>>751を知ってる方いないでしょうか?
753デフォルトの名無しさん:2005/04/22(金) 11:12:29
TRACEするか、System::Diagnostic::Trace 使うしかないんでないかい?
754デフォルトの名無しさん:2005/04/22(金) 11:47:16
>>753
よくあることなの?
デバッカーが使えないのはなんとも不自由だ(´Д`;)

がんばります
755デフォルトの名無しさん:2005/04/25(月) 05:24:18
C++/CLIって正式に出るのはいつなんだ?
今managedC++をやるべきか躊躇している。
756デフォルトの名無しさん:2005/04/25(月) 08:43:22
ECMA標準化作業は本当は正式勧告は去年末の予定だったらしいが、3月まで延びた
実装はMSしかやっていないわけで、当然、VisualStudio 2005 の出荷待ち

仕事で必要なんだったら、MC++をやる以外に選択肢はないんだが、勉強程度だったら
C++/CLIを押さえておく程度で問題はないんじゃないか
757デフォルトの名無しさん:2005/05/07(土) 01:01:21
MC++とC++/CLIってどう違うの?
758デフォルトの名無しさん:2005/05/07(土) 01:24:09
MC++をもちっと使いやすくして
文法を整えたのがC++/CLI
759デフォルトの名無しさん:2005/05/07(土) 11:47:58
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 }
};

とかできると信じていたのに
760デフォルトの名無しさん:2005/05/07(土) 15:26:33
さすがにenumは整数型だろうよ...
761デフォルトの名無しさん:2005/05/07(土) 16:31:00
C++/CLIってC++の文法規則からだいぶ逸脱してるのかい?
762デフォルトの名無しさん:2005/05/07(土) 17:53:13
既存のc++クラスのコードはそのまま使えるよ
追加分があるだけ
763デフォルトの名無しさん:2005/05/07(土) 18:03:22
単純にライブラリの追加というよりは、文法にもメスを入れてるのか?
764デフォルトの名無しさん:2005/05/07(土) 18:37:30
>760
いや、MS から手に入る去年の6月版ドラフトには float, double も可能と書いてある
奴ら実装で手を抜きやがった
あ、いや、信じてるよ。正式リリース時にはちゃんと float や double も背景型に
指定できるって。__int64 まで対応しているから、エリア的には大丈夫なはずだし
765デフォルトの名無しさん:2005/05/07(土) 20:20:02
>763
そりゃ、基本的な型だけでも参照型と値型の2種類。インターフェイスやデリゲート、属性も
増えてるんだから、文法にも手を入れないとキャストもできないだろ
766デフォルトの名無しさん:2005/05/08(日) 18:09:55
VS2005にC++/CLIが含まれてるの?
767デフォルトの名無しさん:2005/05/08(日) 22:10:30
>766
yes
ここで出てる C++/CLI の話は、全部 VS 2005 Beta での話
768デフォルトの名無しさん:2005/05/08(日) 22:35:44
C++/CLIも中途半端なリリースになっちまうんじゃないか?
769デフォルトの名無しさん:2005/05/10(火) 00:16:43
ttp://mag.autumn.org/Content.modf?id=20050506023118
こんな事書いてる

確かにその意見には同意するし、C++/CLIへの評価も判る
だが、なぜだろう。疫病神に取り憑かれたような気がするのは(w
770デフォルトの名無しさん:2005/05/10(火) 16:49:06
VC++っていう名前がC++/CLIになるのけ?
771デフォルトの名無しさん:2005/05/12(木) 16:09:53
772デフォルトの名無しさん:2005/05/24(火) 09:30:33
VS2005は
C++のexportには対応してくれてるのかな?
773デフォルトの名無しさん:2005/06/03(金) 17:34:04
VS2005のスレから来ました。以下、知ってたら教えてください。

VS2005TSβ2、VC8で、共通言語ランタイムを有効にしてビルドした
ものを 実行しようとすると、必要なDLL が無いと怒られました。

手動で.NET Frameworkの該当するフォルダにパスを通せば動く
のですが、手でパス設定しなければならないものでしょうか?
(そんなこと無いと思うのですが)

今までネイティブしかやってないので、勝手がわかりません…
どなたかお願いします。
774デフォルトの名無しさん:2005/06/03(金) 17:43:30
そのDLLが.NETのアセンブリならパスは不要だが、普通のDLLならパスが必要。
printfなどのc/c++の関数使っているならいくら/CLRでコンパイルしても
呼び出されるDLLはネイティブのものだからパスが必要になる。
具体的にはどのDLLが無いと出たのか書かないと答えられんよ。
775デフォルトの名無しさん:2005/06/03(金) 18:11:02
>>774
返事ありがとう。
DLLはmsvcr80.dllでした(無記入スミマセン)
通したパスは
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
です。
printfは使っています。
776773&775:2005/06/03(金) 18:14:56
>>774
くだんのプログラムですが、共通言語ランタイムを無効にして
ビルド&実行したときには特に問題は無いです。

このことは、ネイティブなDLLへのパスは通っているという
解釈になりませんか?

777デフォルトの名無しさん:2005/06/03(金) 18:18:07
いや
778デフォルトの名無しさん:2005/06/03(金) 18:35:28
共通言語ランタイム無効で次のオプションでコンパイルしてみ。
実行すると同じエラーが出るはず。
cl /MD xxx.cpp
msvcr80.dllはマルチスレッド対応のランタイムルーチン。シングルスレッドモードの場合は不要。
/CLRの場合常にマルチスレッド対応であることが要求されるため暗黙に/MDが付加される。
VC++6.0用のものは、c:\windows\system32\msvcrt.dll にあるからパスは不要なのだ。
リリース版になったらインストール時にwindows\system32にコピーされるようなるのだと思う。
779773: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デフォルトの名無しさん:2005/06/03(金) 19:30:52
781デフォルトの名無しさん:2005/06/03(金) 23:12:49
>780
いや、明示的に printf なんて使ってるからそれじゃ駄目だろう

>779
C ランタイム・ライブラリのBeta版をシステムに入れちゃいかんだろうさ
モジュールの横に置いたら?
782デフォルトの名無しさん:2005/06/04(土) 00:21:47
>>779
こちらのは前のバージョンなので違うのかもしれないが、
/clr のデフォルトは /MT になってるぞ。/MDは指定可能だが
/MLは不可になってる。/MTじゃエラーになるのかな?
/MT ならモジュールサイズはでかくなるがDLLは不要だ。
783773:2005/06/04(土) 01:00:46
>>781
msvcr80d.dll(デバッグ用?)のは知らない間にもう入ってました。

>>782
>/MTじゃエラーになるのかな?
β2だとコンパイルエラーになります。

784773:2005/06/04(土) 01:24:33
VS2005スレで教えてもらったリンクで概要がなんとなくわかりました。
http://pc8.2ch.net/test/read.cgi/tech/1113305966/201-203
785デフォルトの名無しさん:2005/06/04(土) 01:51:26
>>784
サイドバイサイドか、いよいよWin2000は切捨てかのう。
786773:2005/06/04(土) 12:55:37
>>785
XPSP2にVS2005をインストールして試してますが、
2000だとC++/CLIのランタイムはどうなるんでしょうね?
787デフォルトの名無しさん:2005/06/04(土) 20:27:42
>786
別に変わらんでしょ。COMのサイド×サイドがない振る舞いをするだけで
アセンブリのロードはCLRが管理するから、問題ないんじゃね?
788デフォルトの名無しさん:2005/06/04(土) 21:06:11
msvcr80.dllはアセンブリじゃないんじゃないの?
789773:2005/06/05(日) 06:30:55
>>779
以下、勘違いでした。

>元のプログラムがマルチスレッドプログラムなので /MT を使って
>ビルドしています。 /MD 使ってビルドして実行したらハングするかも

/MLと勘違いしてた。 /MTを/MDにしてもハングする訳ないですね。
っていうか、VS2005って、/MLがなくなってるみたい。今気がついた…

スレ違いスミマセン
790デフォルトの名無しさん:2005/06/05(日) 09:28:54
>788
DLL のロード順て、exe の位置が最優先でしょ
今まで通りサーチは PATH に従うだけで何か問題ある?
mfc の DLL とかと同じ扱いすればいいんじゃねぇの
791デフォルトの名無しさん:2005/06/05(日) 14:47:38
いいえ
792デフォルトの名無しさん:2005/06/05(日) 15:53:27
> DLL のロード順て、exe の位置が最優先でしょ

アホか
793デフォルトの名無しさん:2005/06/05(日) 16:58:37
ん?
MSDN の LoadLibrary には

1.アプリケーションのロード元ディレクトリ。
2.現在のディレクトリ。
3.Windows System ディレクトリ。32->16
4.Windows ディレクトリ。
5.PATH 環境変数にリストされたディレクトリ。

と、書かれているが違うの?
794デフォルトの名無しさん:2005/06/05(日) 17:35:47
整理すると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リソースとして埋め込むかすればよい。
まあこれじゃユーザーが混乱するのも仕方ないわな。
795デフォルトの名無しさん:2005/06/05(日) 17:49:27
>794
だから、2kだと変わらんよね? msvc80.dll はネイティブだから exe の位置に置けば
特に変わらないよと逝っているんだが、なんで漏れが否定されているのかよく分からない(´・ω・`)
796デフォルトの名無しさん:2005/06/05(日) 18:10:59
>>795
> DLL のロード順て、exe の位置が最優先でしょ
のDLLの部分がmsvc80.dllを指しているのか、DLL一般のことを言ってるのか
区別がつきづらかったのだと思うが、>>792が脳髄反射で反応してるのは確かだ。
797デフォルトの名無しさん:2005/06/05(日) 21:09:41
.exeの位置最優先じゃないよ
まったくこれだからカスどもは
798デフォルトの名無しさん:2005/06/05(日) 21:17:40
なんかキレてるw
799デフォルトの名無しさん:2005/06/12(日) 14:56:07
C++/CLIですがref value なクラスは定義部だけでなく実装のコードも含めて
すべて *.h に書くのが普通なのでしょうか?
(そもそも定義部と実装コードは分けられないようですが)
VS2005を使うと*.hにコードがあり、#includeだけの*.cppが生成されます。
全部*.cppに書いても問題ないような気がしますがどうなのでしょうか。
800デフォルトの名無しさん:2005/06/12(日) 16:25:02
編集んときに楽じゃん
事情がない限りは.hに書いたほうがいいんじゃね?
801デフォルトの名無しさん:2005/06/12(日) 17:22:05
全部*.cppに書いても問題ない
802デフォルトの名無しさん:2005/06/13(月) 00:51:54
インライン指定にチェック入れない限り、普通に分離して作成されるけど?
803デフォルトの名無しさん:2005/06/13(月) 08:19:04
んなことたずねてないと思うけど。
804799:2005/06/13(月) 15:36:41
> (そもそも定義部と実装コードは分けられないようですが)
の部分は誤りでした。実装コード側に定義部と同じnamespaceをつけるのを忘れて
エラーが出ていました。C++クラスのテンプレートから作成した場合 802さんの
おっしゃるとおりインラインかどうかを選択できました。
普通のC++のクラスでインラインを多用するとロードモジュールのサイズが
肥大化するので心配していたのですが、Managedクラスの場合はそういう問題は
起きないようで、インラインか否かは表記上の問題で生成されるロードモジュール
に違いはでないようです。
805デフォルトの名無しさん:2005/06/19(日) 00:42:35
C++/CLI めちゃくちゃ違和感ある。
806デフォルトの名無しさん:2005/06/19(日) 01:03:09
みんななんて呼んでるの?
しーぷらぷらしーえるあい?
807デフォルトの名無しさん:2005/06/19(日) 15:01:23
しーしり
808デフォルトの名無しさん:2005/06/19(日) 15:33:53
しぷぷすくり
809デフォルトの名無しさん:2005/06/21(火) 21:56:27
日本語訳も次々と来てるね

C++: .NET Framework プログラミング最良の言語
http://www.microsoft.com/japan/msdn/vs05/visualc/VS05Cplus.asp

STL.NET 入門
http://www.microsoft.com/japan/msdn/vs05/visualc/stl-netprimer.asp
810デフォルトの名無しさん:2005/06/22(水) 08:59:31
日本語訳でて来たね。これも重要だ。

変換ガイド: Managed Extensions for C++ から C++/CLI へのプログラムの移行
Stanley B. Lippman
http://www.microsoft.com/japan/msdn/vs05/visualc/TransGuide.asp
811デフォルトの名無しさん:2005/06/22(水) 16:32:33
>>810
何か後半中部の訳が変じゃない?(前半部と最後は良かったんだが...

>難解で洗練されていない構文を使用すると、開発プロセスにおける危険性が増大します。これは、フロントガラスの汚れや煙が自動車事故の危険性を高めるのと同じです。改訂されたデザインでは、磨き上げられた新品のフロントガラス並みに構文の透明性が向上しています。
ワロタ
>構文糖
>??
>const char* インスタンスに解決されていた解決が、あいまいとしてフラグされるようになりました。
>コンパイル時間ダウンキャスト
812デフォルトの名無しさん:2005/06/24(金) 23:51:57
>構文糖
シンタックスシュガー
813デフォルトの名無しさん:2005/06/25(土) 02:22:06
んなこたわかってるよ
814デフォルトの名無しさん:2005/06/25(土) 02:27:14
managed C++って業務で使ったことある人いる?
うち何件か企画はあったんだけど検討の結果全部C#になりました。
815デフォルトの名無しさん:2005/06/25(土) 02:31:00
ライブラリとしてC#への接合部にMC++使ったよ
メインとしてはとても使えないけど、旧来のルーチンをラップするにはベターな選択だ
816デフォルトの名無しさん:2005/06/25(土) 15:11:05
C++/CLIの方に移るからね。managed C++は消えるでしょ。
817デフォルトの名無しさん:2005/06/25(土) 19:54:45
名前はmanaged C++のほうがかっこいいよね
818デフォルトの名無しさん:2005/06/27(月) 13:05:03
C++がCLIになっても、標準ライブラリィとかはどうなんだろう?
819デフォルトの名無しさん:2005/06/27(月) 17:48:00
ネイティブに対しては変わらない。C++/CLI は特徴として、CLI 拡張を使わない限り
標準C++と変わらない
今までの STL はネイティブに対しては今まで通り使えるし、ref 型とかは STL.NETが
用意される
820デフォルトの名無しさん:2005/06/28(火) 23:23:47
>>819
Boostは使えるん?
821デフォルトの名無しさん:2005/06/28(火) 23:33:40
>820
spilit でパーサ使ってるが?

アセンブリという概念が組み込まれてるので、テンプレートはちょっと実用範囲が低下するが
アセンブリ内なら普通に使える
ヘッダ取り込みなんて無様な真似はアセンブリ内で閉じておけと
822デフォルトの名無しさん:2005/06/28(火) 23:34:25
あ・・・、spilit -> spirit ね
823デフォルトの名無しさん:2005/06/29(水) 12:29:16
ref クラス内で ::EnumWindows() を使っており、
LPARAM に this ポインタを渡したいのですが、方法がわかりません。

こういうことはできない、またはすべきでなかったりするのでしょうか?
824デフォルトの名無しさん:2005/06/30(木) 00:03:34
pin_ptr<LPARAM> current = this;
EnumWindows(&func, current);
で駄目なん?
825デフォルトの名無しさん:2005/06/30(木) 01:09:37
レスありがとうございます。でもコンパイル通らなかったです

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 メンバを使うとかしか思いつかないのですけど、、、
826デフォルトの名無しさん:2005/06/30(木) 01:31:52
えっと、

A* a = reinterpret_cast<A*>(lp); を

A^ a = interior_ptr<A>(lp);
では?

まぁ、ネイティブのワーククラス作った方が簡単だと思うんだけど
827デフォルトの名無しさん:2005/06/30(木) 01:32:57
ごめ。間違えた
interior_ptr<A> a = lp;
だね
828デフォルトの名無しさん:2005/06/30(木) 15:23:58
自己レス、できました

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 なんてはじめて知りました。
829デフォルトの名無しさん:2005/07/11(月) 10:17:57
質問です
ref class 内で、windows.h などにある unmanaged の構造体を
メンバにしようとすると、コンパイルエラーになってしまいますが
こういうときは ref なしの class を作ってやるしかないのでしょうか
830デフォルトの名無しさん:2005/07/11(月) 16:13:57
イベント呼び出しが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使ってないから見当はずれかもしれないけど
832デフォルトの名無しさん:2005/07/11(月) 18:51:33
だったら答えるなよ
833デフォルトの名無しさん:2005/07/11(月) 19:10:44
> だったら答えるなよ
> だったら答えるなよ
> だったら答えるなよ
> だったら答えるなよ
834デフォルトの名無しさん:2005/07/11(月) 19:30:47
>829
その通りです。そういったクラスは混合型と呼ばれ、将来拡張予定の機能です。
それまでは、別に管理クラスを作るか >831 の言う通り、IntPtrに new して
持たせてください
835デフォルトの名無しさん:2005/07/11(月) 19:44:01
>830
gcroot<COMEvent*> m_control が null 値なんじゃね?
いつ作ってんの?
836829:2005/07/11(月) 20:02:18
>>831
>>834
回答ありがとうございます
IntPtr 使って実装することにしました
837デフォルトの名無しさん:2005/07/11(月) 20:35:18
>830
>835 は間違えた。忘れてくり。
EventDelegate * の OnEvent はどこで生成してるの?
838デフォルトの名無しさん:2005/07/11(月) 20:37:37
>836
追加ですが、.Net Framework 2.0 では IntPtr に加えてリファレンスカウンタなどの Ptr 型が
増えているので、それらを利用するのも手だと思われます
System::Marshal 周りを探してみてください
839850:2005/07/12(火) 01:53:55
>837
このUserControlを使うC#コードで生成してます
inst.OnEvent+=new EventDelegate(hoge);
inst.FireEvent();
と書いてみるとここではちゃんと動くんですよね
その後に発生するCOMイベントから
CEvents::OnEvent()経由でFireEvent()がよばれて、そこだとうまくいかないんです

今ソースないので試せませんが純粋仮想関数でも似た結果だったような
840デフォルトの名無しさん:2005/07/12(火) 10:58:35
>839
となると、やっぱり、m_control に値が入っていないような気がするんだけど、これって
どの段階で生成されるオブジェクトなの?
gcroot は非マネージド・オブジェクトがマネージド・オブジェクトを保持するエリアだよね
だから、どこかで COMEvent のインスタンスが渡されていないといけないんだけど
841850:2005/07/12(火) 13:21:34
出来ました…
たしかにm_controlに値を入れるメソッドを作るのは後回しにしたままでした

m_controlに値が入ってなければm_control->FireEvent();
の時点で失敗するだろうという思い込みが原因でした

ありがとうございました
842デフォルトの名無しさん:2005/08/18(木) 21:41:58
C++/CLI の STL をいじってるんだけど、
vector<string^>^ a(gcnew vector<string^>^);
微妙な顔文字に見えてきて、微妙。
843デフォルトの名無しさん:2005/08/19(金) 00:23:03
やめろw
そういわれたら顔文字にしか見えなくなってきたじゃないか
844デフォルトの名無しさん:2005/08/20(土) 12:50:33
Managed C++ってヘッダーに全部実装書くのが普通なの?
845デフォルトの名無しさん:2005/08/20(土) 23:57:27
C++はメソッドのとかまだなんとついていけたけどC++/CLIとかBoost
入れるとややこしいのが出てくるとついていけない様な感じがして
これから先のC++の印象が…。C#に逃げてしまいそう。
なんかいいH.P.ありませんか?
846デフォルトの名無しさん:2005/08/21(日) 00:37:53
C#でいいじゃん。
ジェネリクスと無名関数オブジェクトがついた以上
C++をあえて使う意味は無くなったよ。
847デフォルトの名無しさん:2005/08/22(月) 13:06:05
>あえて使う意味は無くなったよ。

C++よりもマイナーC丼にふさわしい形容。
848デフォルトの名無しさん:2005/08/26(金) 15:32:02
C++/CLI にも無名デリゲートが( ゚д゚)ホスィ…
849デフォルトの名無しさん:2005/08/26(金) 21:41:44
boost::function+boost::bind>>>>>delegate

850デフォルトの名無しさん:2005/08/26(金) 21:59:15
( ゚д゚) 、ペッ boost::bind
boost::lambda(・∀・)イイ!!
851デフォルトの名無しさん:2005/08/26(金) 22:15:31
ぁあぁああああぉおぁあああMSマンセーーーーーーーー!!!!
852デフォルトの名無しさん:2005/08/26(金) 22:27:55
>>850
そんな色物いらん

ただのシンタックス・シュガーで充分だから、匿名デリゲートがある方がいい
単純な比較やソートに使うだけだから
853デフォルトの名無しさん:2005/08/26(金) 23:17:04
Draft 1.14 Aug 2005 が公開されているのを今更ながらに発見
全然追いつけないぉ
854デフォルトの名無しさん:2005/10/06(木) 20:26:06
ActiveXでmanaged c++使えるの?
855デフォルトの名無しさん:2005/10/08(土) 15:13:43
主語が逆だぞ
856デフォルトの名無しさん:2005/10/08(土) 15:22:31
いや、正しいだろ。逆ならみんな答えてる

>>854
実際どうか、試してみないと何とも言えんから、自分でやれ
857デフォルトの名無しさん:2005/10/22(土) 11:58:51
vs.net2003を買ってC#はある程度かけるようになったのですが
今度C++(学校にある環境はvc++ ver6)を勉強することになりました。

vs.net2003で選べるc++とvc++ ver6のc++って全然別物なのでしょうか?
それとも家でvs.netでc++やっても勉強になるんでしょうか?
858デフォルトの名無しさん:2005/10/22(土) 12:52:22
>>857
managed じゃなければいっしょ。
vs.net の c++ でも、managed を選ばなければ、vc6といっしょだよ。
859デフォルトの名無しさん:2005/10/22(土) 13:11:00
>858
やったことないけど、プロジェクトのコンソールアプリでファイル名.cppにしてもWIN32API使えるんですか?
自分では、プロジェクトでコンソールアプリで.cならC言語、.cppならC++、
WIN32アプリやMFCならVCだという頭があったけど。
860デフォルトの名無しさん:2005/10/22(土) 14:40:06
> コンソールアプリでファイル名.cppにしてもWIN32API使えるんですか

全然使える。
超使ってる。
861デフォルトの名無しさん:2005/10/22(土) 21:30:50
VC6はC++の準拠度が古いと言うか明らかにおかしいので、細かい差異で苦労しそうではある
862デフォルトの名無しさん:2005/11/17(木) 04:14:43
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
864デフォルトの名無しさん:2005/11/17(木) 15:10:30
プロジェクトの段階で選んでおけばいいだけ。
865デフォルトの名無しさん:2005/11/17(木) 16:23:34
>>862
>__gc class mgd {
先頭にpublicが抜けてるだけでは。
LNK4243の問題が無ければP/Invokeよりこっちを使いたいよ。
866862:2005/11/17(木) 16:31:44
>>864-865
ありがとうございます。早速試してみます。
867デフォルトの名無しさん:2005/11/17(木) 18:33:29
managed c++ってしょせんC++やってた人と
C#やってた人が同居していちゃいちゃするの
868862:2005/11/17(木) 23:43:12
>>864-865
無事dll化することができました。

LNK4243の警告は出ましたが、とりあえずは使えるようなので今はそのまま使っています。
下記に参考になる情報が載っているようなので、もうすこし頑張ってみます。
返答、ありがとうございました。

ttp://support.microsoft.com/?id=814472
ttp://blog.windy.ac/managed_c/
869デフォルトの名無しさん:2005/12/04(日) 21:40:47
ご教授お願いします
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ておきます
871デフォルトの名無しさん:2005/12/04(日) 22:10:34
>>869
つーかよ、それCOMとして登録されているDLLとInteropに追加したDLLが別もんなんでね?
参照で追加するとき、レジストリに登録されているCOMを指定してやったら?
872デフォルトの名無しさん:2005/12/04(日) 22:26:12
>>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のほうではこれに相当する部分がないなぁ、という感じなのです。
873デフォルトの名無しさん:2005/12/04(日) 22:44:14
参照の追加をするときにCOMを指定できるっしょ
その時、COMの一覧の中から、CHOCOAを指定してやったらどう?
どうも、そのタイプライブラリと、登録されているGUIDが一致してないようにしか
見えないんだけど
874デフォルトの名無しさん:2005/12/04(日) 22:58:57
>>873
私も原因はGUIDの不一致だと思います。

で、そこのCOMの一覧にChocoaLibっていうのがあるんですが、
それを選択すると↑で言ったようになってしまうんです。。
875デフォルトの名無しさん:2005/12/04(日) 23:08:11
「参照の追加・・・」でローカルサーバ(EXEサーバ)は追加できない、っていう問題が
あったような気がするけど気のせいかもしれない。

tlbimp hoge.exe /out:hogeexe.dll とかしてinteropアッセンブリを手動で作ってみては?
876デフォルトの名無しさん:2005/12/04(日) 23:38:38
>>875
ありがとうございます。ただ、やってみたところエラーでした。

>TlbImp error: The input file 'C:\Program Files (x86)\Local\CHOCOA\chocoa.exe' is
> not a valid type library

今タイプライブラリから生成されたアセンブリを逆アセして
CHOCOAClassのGUIDを書き換えて再アセンブルする
という方法を思いついたのですが、ちょっと怖いな。。
877デフォルトの名無しさん:2005/12/05(月) 00:02:57
どうやら>>876の方法でできたようです!
何度もご返事くださった方、ありがとうございました。

これはタイプライブラリの生成時がアレだったということなのかなあ。。
878デフォルトの名無しさん:2005/12/09(金) 17:16:46
VC++.NET2003 でVBなどから参照できるクラスライブラリ作成しております。
基本的には機嫌良く動いているのですが、同じクラスライブラリ内のクラスを
継承した派生クラスでデストラクタを記述しようとするとエラーが出ます。
継承関係のないクラスのデストラクタは成功します。
中身を空にしたりvirtual や void を付けたり取ったりしても同じです。

また普通にFormのプロジェクト内で作成したクラスの継承では問題ありません。

error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void
(__thiscall*)(void *),void *)"
(?__CxxCallUnwindDtor@@・・・・)" は未解決です。

クラスライブラリ内で継承したクラスにデストラクタをつけるにはどうしたらいいでしょうか?




879878:2005/12/12(月) 23:42:31
放置の模様ですので移動します。
880デフォルトの名無しさん:2005/12/13(火) 09:03:18
放置というよりは、最近、mc++ を触っていないのでわからないんだよな
簡単なアプリでも起こせるの?
881878: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(){;}
};
}
882デフォルトの名無しさん:2005/12/14(水) 22:35:49
>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()
{
}
};
}

これちゃんとコンパイルできたよ?
リンク時にトラぶってるのかな
883デフォルトの名無しさん:2005/12/14(水) 23:28:22
884878:2005/12/15(木) 02:27:16
レスサンクス。

>>883
こんなのもあったりで、なにがなんやら・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmxspec/html/vcmanagedextensionsspec_4_2.asp

それから、新展開がありまして、クラスライブラリ作成時に自動的に作成されるcppファイルをはずすか、
cppの中の #include "test.h" をはずせば何とかリンクが通るようです。
しかし、cppにソース書くなら#include をはずせないし。

実装はすべてヘッダファイルへ、ってことでしょうか。
そういう通例があるというのもどっかで聞いたことがあるような無いような・・

885デフォルトの名無しさん:2005/12/15(木) 12:15:01
私も気になっています。
VC++では実装はヘッダーファイルに書くことが多いのでしょうか?

クラスライブラリかWindowsフォーム(.NET)か
によっても違うのかもしれませんが。。
886デフォルトの名無しさん:2005/12/15(木) 12:46:19
実装をヘッダーファイルに書くというイディオムが存在する。
名前は忘れたけど。
887デフォルトの名無しさん:2005/12/15(木) 13:47:04
うる覚えなんだが、むかーし、mc++ で空の cpp を使っているとトラブった記憶がある
メソッド増やして実装を入れたらコンパイルできるようになった気がする
888デフォルトの名無しさん:2005/12/15(木) 13:50:25
>VC++では実装はヘッダーファイルに書くことが多いのでしょうか?

STLなんかは全部ヘッダーなんでわ?

>イディオムが存在する。 名前は忘れたけど。

名前があるのは知らなかった。知りたいお。

889デフォルトの名無しさん:2005/12/15(木) 16:25:47
>>888
>STLなんかは全部ヘッダーなんでわ?

違うよ。C++用のlibファイルが存在する時点で気づこう。
890デフォルトの名無しさん:2005/12/15(木) 21:54:22
>>889
iostreamとかlocale関係はたしかにlibファイルが使われているだろうが,
俺が一般的だと思う意味でのSTLの部分はヘッダに全て実装されている。
(コンテナ・アルゴリズム・イテレータ・関数オブジェクトなど)
891デフォルトの名無しさん:2005/12/15(木) 22:22:07
まぁ、STLっていう言葉自体、規格上の正式な用語ではないからね。
892デフォルトの名無しさん:2005/12/15(木) 22:32:13
じゃあこうしよう。
WTLは全部ヘッダーだ
893デフォルトの名無しさん:2005/12/15(木) 22:32:39
っていうかtemplateやるならヘッダーファイルになるんじゃ?
894デフォルトの名無しさん:2005/12/15(木) 22:51:11
共通実装がlibにはいってるんじゃなかろうか
895デフォルトの名無しさん:2005/12/15(木) 22:54:12
俺が思うにiostreamはcharとwchar_tで明示的実体化したものがライブラリに入っているのではないかと思う。
896デフォルトの名無しさん:2005/12/16(金) 01:00:48
>>890
SGIのオリジナルSTLはそうだね。
STLportやgccのlibstdc++のSTL部分は*.cもある。
897デフォルトの名無しさん:2005/12/16(金) 08:50:20
やっぱ基本は.hだおね。

でも、自分のソースは.hに全部入れると読み難い。
898デフォルトの名無しさん:2005/12/16(金) 11:40:53
へー。なるほど。

じゃ、hファイルに書くかcppファイルに書くかって
どこらへんで判断してるのでしょう。。

簡単には切り分けられない?

899デフォルトの名無しさん:2005/12/16(金) 13:06:12
だから、クラス宣言以外、つまりクラスの実装部は全部.cppに入れると書きやすいんじゃないの?

言語仕様的には.hに書くのが推奨なんだろうけど。
900デフォルトの名無しさん:2005/12/16(金) 13:35:57
>>890
本当にそう思うなら、C++のlibとリンクせずにvectorを使ってみてくれ。
901デフォルトの名無しさん:2005/12/16(金) 13:51:49
890じゃないけど、、、

>>900
C++の文法から逝って論理的に可能。
だからといって、わざわざレスするためにテストしる!というのは如何なものかと。
902デフォルトの名無しさん:2005/12/16(金) 14:32:18
>>901
結論からいうよ。無理なんだよ。
メモリのアロケーションに関する部分がライブラリ依存なの。
「論理的に可能」とか意味不明なこと書くな。
論理的って何だ?まずは、そこから教えろ。
903デフォルトの名無しさん:2005/12/16(金) 15:11:36
メモリのアロケーションがlibだからって、
STLがcppも必要だとは如何なものかと。
904デフォルトの名無しさん:2005/12/16(金) 15:15:33
ライブラリ依存を.hに絶対入れることが出来ないわけじゃないお。
905デフォルトの名無しさん:2005/12/16(金) 17:00:15
>>899
言語仕様的には.hにすべて書くのが「推奨」なのでしょうか?
906デフォルトの名無しさん:2005/12/16(金) 17:14:17
>>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>
907デフォルトの名無しさん:2005/12/16(金) 23:59:14
>>898
libstdc++なんかはかなり恣意的。基準があるとは到底思えない。

自分は全部.hに書く流儀。
別途プロトタイプ宣言書くのが面倒と言うだけの理由。

最初にオリジナルSTLを見たときはかなりビビッた。
あんな大きいクラスライブラリで全部.hなのは始めてみたので。

けど今は心配するのはよして、.hを愛するようになった。
908デフォルトの名無しさん:2005/12/17(土) 12:11:46
お陰で、プリコンパイルヘッダの有り難みを身に染みて感じるようになった。
909デフォルトの名無しさん:2006/01/05(木) 17:44:02
C++アンマネージ拡張 ってのがあると聞いたんだが、誰か知ってる人いますか?
910デフォルトの名無しさん:2006/01/06(金) 05:03:53
>>909
VC++用に書いたclassがMC++から呼び出せる。
具体例はヘルプにすんごく分かりやすいサンプルが載ってるからそれを見るべし。
911デフォルトの名無しさん:2006/01/06(金) 09:45:07
猫でも〜は辛うじてGDI+のところでC++でないとコンパイルできないプログラムを作っているな。
912デフォルトの名無しさん:2006/02/04(土) 18:04:19
managed C++ やろうぜ!! 002
http://pc8.2ch.net/test/read.cgi/tech/1139043535/l50
913デフォルトの名無しさん:2006/02/04(土) 20:34:32
.Net 2005は出たばっかだから、業務にはちょっと…。
ということで、やっとこさっとこ、.Net2003に移行。いままで、V6だったからなぁ…。
manage C++ に初挑戦ですよ。
914デフォルトの名無しさん:2006/02/04(土) 20:40:11
>>913
悪いことは言わん、VS2005に上げてC++/CLIに取り組め。
915デフォルトの名無しさん:2006/02/04(土) 23:51:53
>>914
なんで? 

それって、説得できる情報がないと、みんな動いてくれないんだよね。
出たばかりだと情報も少ない事が分かってるからね。バグもしかり。

納得できる回答を望む。
916デフォルトの名無しさん:2006/02/05(日) 00:01:01
逆に何故今managed C++なの?

納得できる回答を望む。
917デフォルトの名無しさん:2006/02/05(日) 01:32:04
>>916

>.Net 2005は出たばっかだから、業務にはちょっと…。

回答は出てるだろ?
918デフォルトの名無しさん:2006/02/05(日) 07:25:06
>>915
managed C++の欠点。
キーワードが下線ばかりで汚い。
デストラクタの発動がC#と同じGCされるとき。
マネージオブジェクトはnewしないと作れない。
マネージオブジェクトに対して演算子多重定義が使えない。
919デフォルトの名無しさん:2006/02/05(日) 21:23:27
>>918
つまり、言語仕様が少し古い…と言うことなだけか? CLIの方が洗練されていると言うだけ?
コード書くだけがプロジェクトじゃないから、そんなことはとても些細なことだな。

そんな答えで、納得できるヤツはバイト君ぐらいなモンだ。
出直せ。
920デフォルトの名無しさん:2006/02/06(月) 01:36:32
C++/CLIはこれからの言語だけど
Managed C++はいつ切り捨てられるかわからない言語
921デフォルトの名無しさん:2006/02/06(月) 01:43:36
でも、仕事では金が絡むからな。切り捨てられても、.Net2004を使っていれば問題ない。
つーか、まだVC6が現役なところも変えず多くあるんだぞ?
少なくとも、サービスパックが複数出てからじゃないと C++/CLIには移行できないよ。
922デフォルトの名無しさん:2006/02/06(月) 03:06:44
枯れる前に摘まれちゃったManaged C++に敢えて行く理由がよくわからないな。
C++/CLIが枯れるまでVC++6.0でいいじゃない。
923デフォルトの名無しさん:2006/02/06(月) 08:23:15
managed C++は、将来バグフィックスされるかどうかもわからないのに、

> 切り捨てられても、.Net2004を使っていれば問題ない。

なんて良く言えるね。どっちも調査だけで業務はスルーしとけよ。
924デフォルトの名無しさん:2006/02/06(月) 13:08:58
>>923
.Netはライブラリとして、多機能。

話を誤解してるな。
.Net2004でクオリティをクリアしたアプリをメンテナンスするには.Net2004を使い続ければよい。
ということだ。

バグフィックスされることより、バグを避けられることが重要。
その点、manage C++ は情報がある。

managed C++にバグがあったとしても、できあがった製品のクオリティと運用に問題がなければ、
そのバグは存在しようがしまいが、問題ない。
925デフォルトの名無しさん:2006/02/06(月) 18:47:19
何この馬鹿?
926デフォルトの名無しさん:2006/02/06(月) 19:10:59
釣れた!
927デフォルトの名無しさん:2006/02/06(月) 19:44:46
学生はクソして C++/CLIとかいうヤツに必死になってればぁ?
928デフォルトの名無しさん:2006/02/06(月) 19:45:54
そもそも.Net 2004とは何?
929デフォルトの名無しさん:2006/02/06(月) 20:00:58
釣れた!
930デフォルトの名無しさん:2006/02/07(火) 12:38:57
>>928
池沼は無視
931デフォルトの名無しさん:2006/02/09(木) 11:44:02
で、manage c++から C# を呼び出すってのはどうやんだ?
932デフォルトの名無しさん:2006/02/09(木) 16:48:00
>>931
参照設定(#usingやプロジェクトのプロパティから)
933デフォルトの名無しさん:2006/02/09(木) 22:09:27
マーシャリングの必要もないのか?
934デフォルトの名無しさん:2006/02/14(火) 22:42:33
いらん
935デフォルトの名無しさん:2006/02/15(水) 04:52:18
つまり、C#のクラスを manage C++からは参照設定でOK。

んじゃ、unmanage C++からは?
936デフォルトの名無しさん:2006/02/19(日) 08:08:35
CLRHosting
937デフォルトの名無しさん:2006/02/20(月) 18:53:23
>>936

めんどくさそうだな? 簡単か?
938デフォルトの名無しさん:2006/02/21(火) 17:49:05
自分で調べようとしないおまえには無理だろう
939デフォルトの名無しさん:2006/02/21(火) 19:15:19
何だ、そりゃ? ブルーワーカーが板についたご回答だな。

しかし、C#側でメモリマネージャから特別扱いしてもらうような、指定は出来ねーのか?
940デフォルトの名無しさん:2006/02/21(火) 21:19:14
・・・(゚Д゚)ハァ?
941デフォルトの名無しさん:2006/02/23(木) 00:02:15
unmanage C++から呼ぶには
やっぱCOMでしょ
942デフォルトの名無しさん:2006/03/01(水) 14:15:35
COMなんてめんどくせーコトしなきゃ、呼べねーのか?

943デフォルトの名無しさん:2006/03/01(水) 14:54:49
C++とCOMは異常に相性が悪い。
944デフォルトの名無しさん:2006/03/01(水) 16:31:57
2005は最適化がクソだからなぁ。バグも派手に出てるし。
今はまた、2003が正解。
945デフォルトの名無しさん:2006/03/01(水) 23:05:02
>>943
それ名言じゃん!
946デフォルトの名無しさん:2006/03/02(木) 00:01:12
943とCOMは異常に相性が悪い。
947デフォルトの名無しさん:2006/03/02(木) 08:36:10
市滅したCOMと相性が良い人って誰?
948デフォルトの名無しさん:2006/03/03(金) 22:35:09
DONBOX
949デフォルトの名無しさん:2006/03/04(土) 04:35:54
SOAPも DONBOXが絡んでるんだよな…。
おかげで…。Toolkitは最悪だったんじゃないかと想像。
950デフォルトの名無しさん:2006/03/04(土) 04:47:17
COMって無駄にメモリを消費する希ガス
951デフォルトの名無しさん:2006/03/04(土) 08:57:30
>>950
何を根拠に?
952デフォルトの名無しさん:2006/03/05(日) 23:11:18
.NETよりましだろ
953デフォルトの名無しさん:2006/03/15(水) 00:02:20
.NETはいいものだ
ライブラリはいいぞ
954デフォルトの名無しさん:2006/03/15(水) 08:52:20
ただのクラスライブラリだろ?

とんでもMFC使わされてたやつとかブビチュウが良いものと思うだけで別にふつー。
955デフォルトの名無しさん:2006/03/15(水) 08:55:48
Gehandhabtes C++
956デフォルトの名無しさん:2006/03/15(水) 10:55:08
ただ、マーシャリングが非常に面倒。
managedは遅いから極力使わないようにしてるし。
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
958デフォルトの名無しさん:2006/03/18(土) 22:07:18
新手のウィルスか?
959878:2006/04/20(木) 00:35:35
クラスライブラリ作成時に、継承関係にあるクラスにデストラクタを
実装するとリンクエラーがでてビルドできない現象がようやく解決しました。

結論から申しますと msvcrt.lib をリンクすることで解決しました。

実は、半年近くデストラクタはあきらめた状態でいたのですが、
今度は new や delete でも 未解決シンボル のリンクエラーが出て
再度調べたところ、msvcrt.libにたどり着き、これで、デストラクタも
解決できてしまいました。
ちなみに ヘッダファイルにすべて実装する、というのは見当違いでした。

960デフォルトの名無しさん:2006/06/13(火) 01:33:51
VC++.NET2003でmanaged をやっています。
とあるプロジェクト内で、サブのForm Classを新規作成したのですが、名前空間を
入れ子にするとデザイナでエラーが出てフォームが表示されなくなります。
(このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした)
コンパイル/リンクは問題なく行われ、実行時のエラーも出ずに、作成したFormを表示もできます。
デザイナの問題と思われます。

これを回避できる策に心当たりある方がおられましたら、ご教示願います。
961960:2006/06/13(火) 01:39:42
こんな感じ。
namespaceを入れ子にしなければ、名前を変更しても
デザイナで表示もできるのです。

namespace AAA{
namespace BBB{

  public __gc class Test : public System::Windows::Forms::Form
  {
     (略)
  };
}
}
962humi:2006/07/14(金) 10:43:26
私は今C#でプログラムをしています。string型の二次元配列使用時、
値が入ってないとき「未定義の値」と表示。値が入って無い場合の
チェック文をそのまま素通りしてしまう。この場合の対処策を
ご教授願います。以下にそのコードの内容を書いておきます。

string[][] st = new string[][];
st = new string[10][];
この後、ループで各要素にメモリーを持たせ、値を入れる。
値が入ってないかを見る条件分は以下の通り。
if(st[i][y] != null && st[i][y] != "")

ふみぱいんより。
963デフォルトの名無しさん:2006/07/14(金) 11:49:02
>>962
>私は今C#でプログラムをしています。
日本語が不自由な方のようですが、ここはその質問に適当な場所ではありません。他をあたりましょう。
964デフォルトの名無しさん:2006/07/14(金) 12:00:30
>>963
日本語の不自由な方っぽいけど、誘導先も書いてあげようよ。
C# と Managed C++ は別。C# でスレ検索かけろ、くらいでいいから。
965デフォルトの名無しさん:2006/07/14(金) 12:08:17
つ ふらっとC♯(初心者用) Part8
966デフォルトの名無しさん:2006/07/21(金) 02:54:39
人少ないと思たら、案外みてるんかな。

みんな、CLIに移行したんかなぁ。
CLIがいやでmanagedにこだわってる人っている?
二重下線が汚いという理由をよく聞くけど、 ^ とか ^>^(顔文字) とか gcnewとかのが俺はいや。
暗黙のbox化なんかも余計なお世話って感じ。(でも、なれたら後戻りできなくなるかも)。
んなとこ変えるくらいなら @"c:\hoge\" + fileName + ".txt" とか装備してほしい(されてんの?)

でも、探してた機能がFrameWork2.0で追加されましたとか最近よく出てきたし、
なんかいいことあるかも、みたいな期待感で、私もC++/CLIに移行する予定です。
ありがとう、managed !!
967デフォルトの名無しさん:2006/07/21(金) 07:12:06
gc new
968デフォルトの名無しさん:2006/07/21(金) 08:16:08
>>966
#define E(s) #s

E(C:\hoge\) + fileName + ".txt"
969デフォルトの名無しさん:2006/07/21(金) 11:13:40
>>968
単純に"C:\hoge\" と展開されるので
>warning C4129: 'h' : エスケープ シーケンスとして正しく認識されませんでした。
が出る。
970デフォルトの名無しさん:2006/07/23(日) 00:27:05
C++/CLI 今ダウンロードして実行したけど、Stringの+演算子は使えるみたいですね。
@"..." もサポートされてないし、>968もうまく動作しないけど。
971968
うわ、ごめん。
\とかもエスケープしてくれるもんだと思っていた。

パスの区切りなら「大抵」スラッシュでもいけるからそっちへ逃げる方向で勘弁して。