トップページ⇒tech
971コメント269KB

managed C++ やろうぜ!!

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
C#関連のスレは山ほどあるが
managedC++のスレが無いじゃないか。
折角.NETに生き残ったC++、みんなで語ろうぜ。
0002デフォルトの名無しさんNGNG
おお、
語ろう
0003デフォルトの名無しさんNGNG
>1=>2
0004デフォルトの名無しさんNGNG
1-2=3
0005デフォルトの名無しさんNGNG
名スレの予感
0006デフォルトの名無しさんNGNG
1-2+3=4
0007デフォルトの名無しさんNGNG
1==2==3
0008デフォルトの名無しさんNGNG
1^2^3^4^5^6=7
0009デフォルトの名無しさんNGNG
v(^・^)v(^・^)v(^・^)v(^・^)v=1*3
0010デフォルトの名無しさんNGNG
if(1から9まで同一人物だったら)
{
System.out.println("○○○");
}
の「1から9まで同一人物だったら」
の部分って
1==2&&1==3&&....
って書くのは長ったらしいので
何かいい方法ありますか?
0011デフォルトの名無しさんNGNG
ポインタ、template、が生き残っただけでも凄い嬉しい。
と言う事はSTLもとおると言う事か・・・?
素晴らしい!!
0012デフォルトの名無しさんNGNG
結局、
class CA{
public:
template<typename T>void func(T t);
};
template<typename T>void CA::func(T t){.......}
がエラーになるのは解決されたのだろうか??
0013デフォルトの名無しさんNGNG
をを・・・解決されているみたいですな。
今試したら、ちゃんと動きましたよ。
0014デフォルトの名無しさんNGNG
何てこった・・・.NET SDKには<iostream.h>が入ってない。
さようなら、cout・・・・
0015デフォルトの名無しさんNGNG
マナゲドって何よ?
0016デフォルトの名無しさんNGNG
>>14
普通のSDKと.NETのSDKは
C++の扱いは違うの?
.NETのC++はあくまでmanagedコードを
書くためのものなのかな?
0017デフォルトの名無しさんNGNG
man=男
aged=ageの過去形
0018デフォルトの名無しさんNGNG
>15
ネタだよな・・・?
0019デフォルトの名無しさんNGNG
>>15
マグドナルドの経営する中華風ファーストフード店の名称です。
0020デフォルトの名無しさんNGNG
どうせなら「相談室」スレにしたら良かったのに。
0021デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> managed C++
0022デフォルトの名無しさんNGNG
>>14
本当だ......。よくみるとVS.NETのほうにしかiostrem.hはないですね。
まあ私はVS.NET買うつもりなので関係ないけど。
0023デフォルトの名無しさんNGNG
ってか、iostream.hなんていいかげん捨てろよ。
それにマトモなSTL入れておけば問題ないだろ。
0024デフォルトの名無しさんNGNG
>iostream.hなんていいかげん捨てろよ
どゆいみ?
0025デフォルトの名無しさんNGNG
iostream
0026デフォルトの名無しさんNGNG
ファイル名から .h が取り除かれたのが今の標準ってこと知らんのか?
0027デフォルトの名無しさんNGNG
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0028デフォルトの名無しさんNGNG
>>10
 !(a^b || a^c || ... )
がベストに近いかな?
少なくとも&&使うよりは良いと思われ。
002922NGNG
よく考えてみれば、自分の環境はいきなりVS.NETベータ2をいれたので
純粋に.net SDKを入れただけで本当にiostream.hがインストール
されるかどうかはわからなかったです。
ちなみにC:\Program Files\Microsoft.NET\FrameworkSDK\includeには
なかったです.......。
0030デフォルトの名無しさんNGNG
>>10
適当なコンテナに突っ込んでfor_eachで比較
0031デフォルトの名無しさんNGNG
>>30
for_each()じゃなくて、find_if()だろ
0032デフォルトの名無しさんNGNG
__gc class CA{.....};
とすれば、

mann(){
CA* pca=new CA;
}
delete pca;を書かなくても、
ガベージコレクションがオブジェクトを壊してくれる。
便利になったなぁ・・・。
0033デフォルトの名無しさんNGNG
>>32
mann()ってなに?ネタだよな・・・?
0034デフォルトの名無しさんNGNG
>>16
.NETでも今までと同じC++が書けます。
managedコードを吐かせたくなければ、コマンドのcl/CLR
からCLRを外して、ソースからmanagedC++固有の書式を除けば
可能です。多分。
0035ぎゃあああああNGNG
managed C++でCOMオブジェクトは作れないの?
0036デフォルトの名無しさんNGNG
>>35
AttributeとATLで作った方が楽だぞ。
0037ぎゃあああああNGNG
>>36
.NET frameworkを使えるATLの環境がほしい…。
0038デフォルトの名無しさんNGNG
MFCは今後まともなサポートは期待
出来ないんだろうなぁ。
0039デフォルトの名無しさんNGNG
>>38
移植です。それしかありません。
0040デフォルトの名無しさんNGNG
アセンブリへのパスが通らん。何故だ?
ベータ2ってインストール時にパスを通すとか言ってなかったか?
0041デフォルトの名無しさんNGNG
いいや、ここはダレも通さん。
0042デフォルトの名無しさんNGNG
>>40
練習あるべし。
0043デフォルトの名無しさんNGNG
ディフェンスの宮本にパスカットされた。
0044デフォルトの名無しさんNGNG
アセンブリは「パス」は関係ないっす。アプリと同じディレクトリにおいてみるべし。
0045デフォルトの名無しさんNGNG
>44
そうなんですか?
fatal error C1107: アセンブリ 'System.WinForms.dll' がみつかりませ
んでした : /AI または LIBPATH 環境変数を使用してアセンブリ検索パスを指定してくだ
さい。
と、出るんですが。'System.WinForms.dll' ってassemblyと言うフォルダの中に
あるんですけど・・・。
0046デフォルトの名無しさんNGNG
根性が足りん
0047デフォルトの名無しさんNGNG
根性かよ!?
・・・頑張ってみるよ
0048デフォルトの名無しさんNGNG
>>45
'System.WinForms.dll' ということは、相当古いバージョンだね。
0049デフォルトの名無しさんNGNG
>>45
System.WinForms.dllはBeta2でSystem.Windows.Forms.dllに変わりました。
0050デフォルトの名無しさんNGNG
おお、成る程。
そのDLLはありました。assemblyフォルダじゃなくて.NETの方に。

Microsoft.Win32.Interop.dllも名前が変わっているのですか??
0051名無しさん♯NGNG
>>50
> Microsoft.Win32.Interop.dll

そのDLLはβ2以降なくなったよん。
0052デフォルトの名無しさんNGNG
無くなった・・・?
もう根性でもどうにもできないな。
0053デフォルトの名無しさんNGNG
お前の環境はどうなんてっだと、小一時間問詰めたい。
0054デフォルトの名無しさんNGNG
OSのクリーンインストールからだな。
0055デフォルトの名無しさんNGNG
.NETベータ2、VC6.0、JAVA2しか入っていません。
0056デフォルトの名無しさんNGNG
うちもVS.NETβ2とVS6.0は入ってるけど別に問題無いよ。
てことはJAVAかな?
0057デフォルトの名無しさんNGNG
んなわけない。
旧バージョンをアンインストールせずに新しいやつ入れたんでしょ。
0058デフォルトの名無しさんNGNG
お前本当に古いバージョンを消したのかと、トイレに連れ込んでボコボコにしながら問詰めたい。
005956NGNG
あ、要るDLLが無いんじゃなくて、要らないDLLが在るのか(藁
スマソ
0060デフォルトの名無しさんNGNG
アンインストはかけましたよ?
但し、インストールとアンインストールを計6回ぐらいしましたが・・・
0061デフォルトの名無しさんNGNG
その環境は捨てろ。
OSから再インストールしやがれ。
0062デフォルトの名無しさんNGNG
β2でFormを使ったHello Wolrdをどなたかお示しください。
日本語ページでは見付かりません。
(managed C++の情報って何処にあるんだ? )
0063デフォルトの名無しさんNGNG
こんなんでどうでしょう?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
0064デフォルトの名無しさんNGNG
をを・・・出来ましたよ。
ありがとうございます!!
(やっと、GUIの門の前に立った♪)
0065仕様書無しさんNGNG
おおっ、いつの間にこんなスレが!
昔、managed C++とC#の比較のセミナー見たことあるけど、
managed C++は味があっていい感じ。
0066デフォルトの名無しさんNGNG
C#とmanaged C++ってどう違うんですか?
0067デフォルトの名無しさんNGNG
文法が違います。
JAVAとC++と同じぐらい違います。
0068デフォルトの名無しさんNGNG
>>63を見る限りは文法がそんなに違うとも思えないんですが…
0069デフォルトの名無しさんNGNG
VCをメインに使ってきた私にはC#もJAVAもほとんど一緒に見えるのです。
だからmanaged C++は私には絶好の言語なのです。ガベコレがあるなんて
最高としか思えない。
0070デフォルトの名無しさんNGNG
ガベージコレクションってnewしたヤツだけ消してくれるの? GetDCしてReleaseDCしなくてもよくなるとかってことは?
0071デフォルトの名無しさんNGNG
誰かmanaged C++の分かり易い解説ページ知らない?
本とか全然ないしさ、みんなどうやって勉強してるの?
0072デフォルトの名無しさんNGNG
>>70
ない。GC対象になるのは__gcなクラスだけ。

>>71
RTMのドキュメント。
0073デフォルトの名無しさんNGNG
managed C++ってSTL使えるの?
使えるなら、managed C++に乗り換えるけど。
0074デフォルトの名無しさんNGNG
C#とくらべて少しは速いの?>>実行速度
0075デフォルトの名無しさんNGNG
>>37
gcroot
0076デフォルトの名無しさんNGNG
>>73
You can use it
0077デフォルトの名無しさんNGNG
managedC++ってネィティブコンパイラ?
0078デフォルトの名無しさんNGNG
C#とコレが使えれば、とりあえず
10年は喰えそうな気がするのだが、
俺の気のせいだろうか・・・・?
0079デフォルトの名無しさんNGNG
正解。
0080デフォルトの名無しさんNGNG
>>77
っていうか、cl.exeはネイティブコードもILも両方吐けます。
0081デフォルトの名無しさんNGNG
クライアント領域が出ねぇーーーー!!
何故だぁ!!
0082デフォルトの名無しさんNGNG
>>80
ネイティブっつーても、
.NET frameworkは必要。
誤解する人も出るので
言い方改めた方がよい。
0083デフォルトの名無しさんNGNG
>>82
それを言ったら、いまのプログラムも Win32 API は必要だし。(GDI32.DLL とかさ)
0084デフォルトの名無しさんNGNG
ATLってどうなるの?
0085デフォルトの名無しさんNGNG
>>84
死滅しました
0086デフォルトの名無しさんNGNG
COMの時代も終わりか・・・
0087デフォルトの名無しさんNGNG
>>85
.net でもヘッダファイルには残ってるが。従来の WTL の機能も一部取り込んで、
発展はしてる。(メインストリームではないと思うが)
0088デフォルトの名無しさんNGNG
>>82
はぁ。誤解しているのはあんたです。cl.exeはx86ネイティブ吐けます。ILを吐くのは/clrのときだけ。

>>85-87
ATL7使ってみなって。ある意味C++/ATLユーザーは.NET Frameworkなんかいらないってことがわかるから。
ATLはまだまだメインストリーム。
0089デフォルトの名無しさんNGNG
age
0090デフォルトの名無しさんNGNG
マネジドやるならC#かJavaでええやん。
0091デフォルトの名無しさんNGNG
C++でもええやん
0092デフォルトの名無しさんNGNG
>88
82じゃないけどおれも誤解してたかも。
managed C++はCLR(.NET)を使うために作られたものだと思ってたけど、
CLRと全く関係無しに managed C++を使うものなの?
0093デフォルトの名無しさんNGNG
>>92
managed extension for C++はC++の構文で、CLR向けのコードを書くための拡張機能。

Visual C++ .NETは、通常のC++以外に、managed extension*も*サポートするC++コンパイラ。

>CLRと全く関係無しに managed C++を使うものなの?
CLRと関係なしに「C++を」使うことができる。
CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
OK?
009492NGNG
>93
>>CLRと全く関係無しに managed C++を使うものなの?
>CLRと関係なしに「C++を」使うことができる。
>CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
CLRを使わずに、「managed extensionをC++とともに」使うことはありえないですよね?

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

あ、ちなみに83==93==thisってことで。
0098デフォルトの名無しさんNGNG
ちがーう。88==93==97。
0099デフォルトの名無しさんNGNG
templateが使えて、GCもあればC#いらん。
C++プログラマーの長年の夢は叶えられた。
0100100!NGNG
今だ100ゲット!
0101デフォルトの名無しさんNGNG
>99
ならD使え
0102デフォルトの名無しさんNGNG
しかし101は無視された!
しかし101は無視された!
しかし101は無視された!
010399NGNG
D言語ってDigital Marsのところのヤツか?
確かにC++に最も近いだろうが、「何処でも動く」
わけじゃないからなぁ。
0104デフォルトの名無しさんNGNG
>「何処でも動く」
managedとか言ってる時点で駄目だろ
0105デフォルトの名無しさんNGNG
んなこたぁない。実際に「何処でも動く」ようにしてあるんだから。
言葉の定義はどうでもよくて実際が大事。
0106デフォルトの名無しさんNGNG
managedが動く「何処でも」って何処のこと?
0107デフォルトの名無しさんNGNG
>103-105
微妙なずれを感知。
0108デフォルトの名無しさんNGNG
どこでも=MSか地味案が気にかけてくれた所&ユーザがCLR作っちゃうくらい
やるきのあるコミュニティのある所。
0109デフォルトの名無しさんNGNG
>>99
君は、何屋さんかな?
C++プログラマは要らないと思ってるんだよ。
今まで、ずっとJavaにコンプレックス持ってて、
「でもこっちにはテンプレートがあるんだい」とか言って田?
0110デフォルトの名無しさんNGNG
C++プログラマは要らないと・・・
ガ━━(゚Д゚;)━━ン!
0111デフォルトの名無しさんNGNG
>109-110
明らかなズレを感知。
0112デフォルトの名無しさんNGNG
>109
その通りです。
JAVAのバカヤロー!!
0113109NGNG
ごめん。
誤:C++プログラマは要らないと思ってるんだよ。
正:C++プログラマはGCなんか要らないと思ってるんだよ。何にしても、煽り入ってたね。ごめーん。
0114デフォルトの名無しさんNGNG
許さーん。
0115デフォルトの名無しさんNGNG
確かにC++にガベージコレクションはいらないかも。
ろくにメモリの管理もできないような厨房大量発生の予感。
0116デフォルトの名無しさんNGNG
いらないというか付けて欲しくないね。
もし付いたらパフォーマンス最優先なOOPLがなくなってしまう。
0117デフォルトの名無しさんNGNG
auto_ptrで十分…
0118デフォルトの名無しさんNGNG
BoehmGCだっけ?あれはどーなの?
0119デフォルトの名無しさんNGNG
Bjarne Stroustrup >
>>The best garbage collecting language that I know of is C++ with a garbage collector.
0120デフォルトの名無しさんNGNG
The best garbage collecting language that I know of is Ruby!
0121デフォルトの名無しさんNGNG
>>116
クラス単位で選択可能にすれば良いだけだと思うが。
0122デフォルトの名無しさんNGNG
>121
なにがいいんだ?
それでGCが走るタイミングを制御できんのか?
0123デフォルトの名無しさんNGNG
GC なら Lisp に一日の長あり。
0124デフォルトの名無しさんNGNG
>>119
おお・・・Stroustrupがそんなことを言っていたなんて(福音)
その下のは何?宗教の勧誘か??
0125デフォルトの名無しさんNGNG
>>119
「GC付きのもっともよい言語は、私の知る限り、GC付きのC++です」
意味わかりません。これマネジドのこと?そんなこと教祖が言ったの?
信じらんない。ソース希望。
0126デフォルトの名無しさんNGNG
そうだよねー、
GC の制御を細かく出来ないと 速度がクリティカルな環境じゃ使えない。

なんとかならないのかな? .NET の GC は。
0127デフォルトの名無しさんNGNG
>>126
クリティカルな部分は自分で管理するとかして、
gcの起動を抑制すればいいんじゃない?
0128デフォルトの名無しさんNGNG
>>125
訳さんでもいいわい。
ttp://www.csl.mtu.edu/cs5311/www/quote.html
0129デフォルトの名無しさんNGNG
こんなのもあるぞ。
http://pc.2ch.net/test/read.cgi/tech/1010852722/620
0130デフォルトの名無しさんNGNG
StroustrupはC++のことしかいってないなぁ(w
>Pablo Picasso
>Computers are useless. They can only give you answers.
が(・∀・)カコイイ!!
0131デフォルトの名無しさんNGNG
マジな話、GCの制御できないのか?(文法レベルで)
VS.NETにはオプションでありそうな気がするんだが。
0132デフォルトの名無しさんNGNG
なにを制御したいのかな?呼びたいときに呼ぶってなら、System.GCクラスでできるけど。
あとGCが起動するスレッドをどれにするかとか、制御できるよ。

でも、VS.NETのオプションとかいってるところを見ると、アンタGCわかってないね。
開発環境と関係あるわけがない。
0133興味本位NGNG
ベタな質問でスマソ。
managed C++ソースコードの標準的な拡張子って.cppのままなんですか?

managed G++が出ないかなあ…(CLRが先か)
0134デフォルトの名無しさんNGNG
>133
そう。
0135興味本位NGNG
thx
構文的にはC++にCLRを使うための機能を追加しただけだから.cppでいいのか。
0136 NGNG
機能追加なら、C++++で.cp4か?
0137デフォルトの名無しさんNGNG
++c++ではどうか。
0138デフォルトの名無しさんNGNG
++++++++c++++++++
0139デフォルトの名無しさんNGNG
それじゃBrainF**kだよ(w
0140デフォルトの名無しさんNGNG
Visual BrainF**k
0141デフォルトの名無しさんNGNG
age
0142デフォルトの名無しさんNGNG
類似スレが立ったようだが、いきなり荒らされてるな。
0143デフォルトの名無しさんNGNG
c=1;
++c++;
は
c==3ですか?
0144デフォルトの名無しさんNGNG
ttp://msdn.microsoft.com/msdnmag/issues/02/02/ManagedC/ManagedC.asp
0145デフォルトの名無しさんNGNG
全てがオブジェクトである
0146デフォルトの名無しさんNGNG
int c = 1, x;

x = ++c++;

cout << "x = " << x << " : c = " << c <<endl;
// x = 2 : c = 3 かな
0147デフォルトの名無しさんNGNG
で、みんな本気で手を出すつもりかい? まなげどC++
0148デフォルトの名無しさんNGNG
unmanagedコードが気軽に呼べる環境として注目してる。
.NET的なクラス/インスタンス管理を自動でやってもらえるのは嬉しい。

MC++のコードでmanagedな部分がメインになることは少ないと思うなあ・・
0149デフォルトの名無しさんNGNG
現在、β2使ってるけど
「古い形式で書かれていますがビルドしますか?」
みたいな内容のダイアログが出てくる時点で
プチ・リストラ気分>VC++ユーザーの俺
0150デフォルトの名無しさんNGNG
明日本番age
0151デフォルトの名無しさんNGNG
「[email protected]」からウィルスが添付されてきた・・・
よって晒し!
0152デフォルトの名無しさんNGNG
managed C++ってRubyコンパイラ並みに無意味なような。
0153デフォルトの名無しさんNGNG
C++ >>>>>>>>>>>>>>>>>>>>>>>>>> Ruby == managed C++
ですか?
0154デフォルトの名無しさんNGNG
入手!!
0155デフォルトの名無しさんNGNG
>>153
ちょい違う。
if( (C++ * 10) > ( ( Ruby * 8 ) || ( Managed C++ << 3 ) ) )
printf( "MS イッテヨシ" );
0156155NGNG
あ、条件文間違えた。
0157デフォルトの名無しさんNGNG
C++ マネージ拡張
0158デフォルトの名無しさんNGNG
VS.NET発売age
0159とあるフリーソフトウェア作家NGNG
しつもーん。
managed C++ のランタイムを配布するときって、
何と何を一緒に配布すりゃいいんでしょ。はたまたそのサイズはいかほど?
あるいは、MSのどこにリンク張っとけばいいんでしょ。

.NET 買うかどうか悩んでるとこなんですが。
0160デフォルトの名無しさんNGNG
このスレタイトルの
managedてなんですか?
0161デフォルトの名無しさんNGNG
>>160
.NET上で動くC++か
今までのC++かってことじゃに
managedC++なコードは.NET上でないと動かないよん
0162デフォルトの名無しさんNGNG
>>159
dotnetfx.exe(21.6MB)
0163159NGNG
で、デケェ・・・。
そんなもん、フリーソフトウェアにはつけることはできん。
やっぱふつーにC++使いますわ。

会社で作るときに検討しよう・・・・。
0164デフォルトの名無しさんNGNG
>>163
どうせすぐにサービスパックに含まれるって。
0165デフォルトの名無しさんNGNG
>>162
それさぁ、Win95で動かすことはできないんかな?
Win95 で CLR / .net しなきゃならないんだけど。
0166デフォルトの名無しさんNGNG
> Win95 で CLR / .net しなきゃならないんだけど。
何それ?
Win95はもうMicrosoftがサポート止めてるのにいまさら出るわけないと思われ
0167デフォルトの名無しさん NGNG
http://hp.vector.co.jp/authors/VA000092/jokes/strup.html
感動した。
0168デフォルトの名無しさんNGNG
何てことだ・・・何てことだ!!
0169デフォルトの名無しさんNGNG
>>167
ああああああああぁぁぁぁぁぁ

優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは
気のせいじゃなかったのか・・・・
0170デフォルトの名無しさんNGNG
"jokes" ?
0171C++歌劇派NGNG
managed C++なんてC++じゃないだろ。
だたらJavaやれ。

>優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは
それは君がパーなだけ。それに、最近は、じじいのCプログラマばっかりで、
優秀なのもいない。
0172デフォルトの名無しさんNGNG
マジレスはあれでしょう。
0173デフォルトの名無しさんNGNG
おいおい、この反応は全部ネタだよな?
0174デフォルトの名無しさん NGNG
>>167
マジな話C++は終わったのか?
ネタだと信じたい。
もし、ビル・ゲイツが10年ぐらいたってC#は実はジョークでしたとか言ったら泣くよ・・・。
0175デフォルトの名無しさんNGNG
誰もまなげどC++やってないらしい罠
0176デフォルトの名無しさんNGNG
よっぽど理由がない限りやらないよ
0177デフォルトの名無しさんNGNG
いや、MC++まんせー!ってひとがMSのnewsにいたよ。
0178デフォルトの名無しさんNGNG
    冫─'  ~  ̄´^-、
    /           丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |    ________________
   ヽノ    /\_/\   |ノ  /
    ゝ   /ヽ───‐ヽ /  /   C#は実はジョークでした
     /|ヽ   ヽ──'   / <     次はC♭出すので買ってね
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0179デフォルトの名無しさんNGNG
まなげどマンセーage
0180デフォルトの名無しさんNGNG
VS6でmanagedC++やってる人いる?
どうもコマンドラインからだとコンパイル成功するのに
エディタからだとdllがらみのエラーが出る。
0181デフォルトの名無しさんNGNG
↑リンクエラーのことね
0182デフォルトの名無しさんNGNG
>>176
C++をmanagedでやる理由もなけりゃmanagedをC++でやる理由も無いからな。
つかC++はキーワードが汚すぎ。
0183デフォルトの名無しさんNGNG
C++から.NETを使いたい。ってそんなにマイナーなニーズ?
MFCだってあとは現状維持程度で、新しいことがしたければ.NETへ逝け!でしょ?

おれは今のところWindowsは開発対象でないので様子見。
0184180NGNG
原因はこれです
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
を読み込ませる方法はないでしょうか?
0185180NGNG
自己レス。
E:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msobj10.dll
を上の.netSDKのDLLで上書きしたらLNK2023は出なくなりました!

という訳でVS6、.netSDK、PlathomeSDKの三つを上手く組み合わせれば
まだまだ開発はできそうです。
0186デフォルトの名無しさんNGNG
をいをい、%LIB%直せよ。。
0187デフォルトの名無しさんNGNG
VC.NETはlokiをコンパイルできるのですか?
というかtemplateの制限はどれくらい解けてます?
0188デフォルトの名無しさんNGNG
VC.NETはloliをコンパイルできるのですか?
0189デフォルトの名無しさんNGNG
>>187
それなりに解けてる
0190180NGNG
>>186
%LIB%にパスを設定したけどダメなんですよ。なんでですかね?
0191デフォルトの名無しさんNGNG
C#ってVBの関数使えるらしいけど、managed C++は使えるの?
0192デフォルトの名無しさんNGNG
.NETの関数、という意味ならどの言語だろうが同じなのでは。
0193デフォルトの名無しさんNGNG
>>192
ほう・・・VBが使えるVC・・・訳わからんな。
0194デフォルトの名無しさんNGNG
>>192
だよな。
カーネル内の関数をVC++で作成したものだろうがVBで作成したものだろうが呼び出せるのと同じだよな。
0195194NGNG
カーネルじゃなくてDLLの方がいいか。
0196デフォルトの名無しさんNGNG
managed C++まじで分らん。誰か助けて!
0197デフォルトの名無しさんNGNG
>>196
やだ
0198デフォルトの名無しさんNGNG
>>196
C#やれ
0199デフォルトの名無しさんNGNG
>>196
質問書けよ。助けて!じゃわからん。
0200デフォルトの名無しさんNGNG
managed C++でやれることは
unsafeキーワード使うことで
全てC#でできるんですか?
0201デフォルトの名無しさん NGNG
unsageって前はマネージドコードってことになってなかったっけ?
0202デフォルトの名無しさんNGNG
多重継承とかは?
0203デフォルトの名無しさんNGNG
>>202
それはそもそもmanaged c++にはない
0204デフォルトの名無しさんNGNG
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcManagedExtensionsSpec_1.htm
0205デフォルトの名無しさんNGNG
>>201
unsage = age
0206デフォルトの名無しさんNGNG
・アクセスと制御。
マネージ コードとアンマネージ コードを混在できるため、
下位レベルのアンマネージ API などに直接アクセスできます。
Visual C++ とマネージ拡張を使用して、最大パフォーマンスの
マネージ API を記述できます。

この辺りしかmanaged C++を使う理由はないな。
C#でも十分パフォーマンスをあげるコーディングの仕方が
用意されてるみたいだし。またx86ネイティブなコードを
書く機会もWindowws上じゃ減るんだろうなぁ。
0207デフォルトの名無しさんNGNG
>>206
MC++のメリットって、APIの構造体(またはクラス)を直接使えることぐらいじゃないかな。
APIの引数の型が単純だったら、C#とかでも難なく使えるし。
0208デフォルトの名無しさんNGNG
>>200
いいえ。C#は何でもできる言語ではありません。VB.NETでできるのにC#では
できないこともあります。MC++でならできるけど、C#やVB.NETではできない(または限定的)と
いうこともあります。

>>206さんの言うことは一部真だと思いますが、C++ユーザーがC#に進んで混乱するくらいなら
MC++のほうがいいという選択もありえると思います。
0209デフォルトの名無しさんNGNG
>>207
ちなみにMC++のアンマネージコードの呼び出しはP/Invokeではありません。
P/Invokeよりも数十倍高速な仕組みを利用します。
0210207NGNG
>>209
ああ、そういやそんな話があったね。IJWって言うんだっけ?
0211デフォルトの名無しさんNGNG
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_PlatformInvocationServices.htm
この辺りかな?
とにかく高速なラッパーという用途だけはC++に残っているわけね。
0212デフォルトの名無しさんNGNG
unsage!
0213デフォルトの名無しさん NGNG
unsage!
0214デフォルトの名無しさんNGNG
既存のアプリケーションをマネージドに移行するのに注意する点なんてありますか?
0215デフォルトの名無しさんNGNG
関係ないですが、"managed C++"を日本語でGoogleから検索すると
かなり上位に出てきます。
0216デフォルトの名無しさんNGNG
>>214
unmanagedコードを使わないようにがんばろう。
0217デフォルトの名無しさんNGNG
MFCとかATLをmanagedコードにすることは可能なの?
0218デフォルトの名無しさんNGNG
ムリ!
0219デフォルトの名無しさんNGNG
ナンデ!!
0220デフォルトの名無しさんNGNG
>>217
/clr つければできるよ。一緒に使えないオプションが多くて面倒だけど。
0221デフォルトの名無しさん NGNG
MC++ってごちゃごちゃしててまじでワケワカラン
0222デフォルトの名無しさんNGNG
とりあえず、新規のプロジェクトでMC++を使うことはないって言うのが
よく分かったよ。
0223デフォルトの名無しさんNGNG
C++死滅スレでも作る?
0224デフォルトの名無しさんNGNG
MC++死滅スレなら。
0225デフォルトの名無しさんNGNG
>>224
VC++に関していえば、
過去の資産を引き継ぐという意味じゃ、
互換性を切り捨てたVBとは役割は全然違う。
10年はなくならない。
それにMC++は多分内部的にかなりC#とコードを
共有してるような気もするから、なくなることは
ないと思う。

あくまで希望的観測だけどどうでしょう?
0226デフォルトの名無しさんNGNG
>>225
MC++ -> MSIL -> C#
いいデコンパイラが出れば良い線行くかも。
MC++ -> MSILとC# -> MSILが似ていれば。
0227デフォルトの名無しさんNGNG
既存のアプリケーションをコンパイルして気が付いたけど、
FILETIME(WinBase.h)とSystem::Runtime::InteropServices::FILETIME
みたいに名前がかぶっちゃうようか場合はどうしてる? 
0228デフォルトの名無しさんNGNG
ms-help://MS.NETFrameworkSDK.JA/vcmxspec/html/vcmg_AmbiguousReferences.htm
0229デフォルトの名無しさんNGNG
>>228
解決しました。どうもです。
0230デフォルトの名無しさんNGNG
ところで普通のアプリに
・使用するDLLを#pragma comment(lib, "XXX.lib")と指定する。
・使用する.net frameworkのDLLをusing <XXX.dll>と指定する。
とこれだけでいいんでしょうか?

しかもやってて思ったのは::MessageBox関数みたいに#define
切られてるのはどうしようもないような気がしてきました。
System::Windows::Forms::MessageBoxWはありませんとか言われて・・・
0231デフォルトの名無しさんNGNG
>>230
dllなのに拡張子libとは?
0232デフォルトの名無しさんNGNG
>>231
LINK : fatal error LNK1104: コンパイラは、ファイル 'kernel32.dll' を開くことができません
こうなっちゃうんですよ。

ところでこうやってコンパイルしたプログラムはmanagedってことに
なるんですかねぇ?もちろん全て__nogcという意味でいいのですが。
なんかMC++ってなんなのかよく分りません。
ildasm.exeでもちゃんと見れるからどうなってるのかさっぱりです。
0233デフォルトの名無しさんNGNG
>>231
#pragma comment(lib, "kernel32")
これでOKでした。拡張子は入りません。
0234デフォルトの名無しさんNGNG
それにしても盛り上がらないですねー。
既存のプログラムをC#で書き直すぐらいなら
MC++を活用した方が全然いいと思うのですが、、、

これでDLLを作ればC#なんかからusing MyLib;
なんて出来ていいと思うのですが。
0235デフォルトの名無しさんNGNG
>>234
ライブラリの移植用としては上の方で語られているね。
すくなくとも.NET用に開発されたC#がもっとも.NETとの親和性が高い。
0236デフォルトの名無しさんNGNG
>>235
個人的にはSun派とMS派のどっちでもないけど、
.netが過去との互換性を重視してる点がいいと思うんですよ。
MC++あっての.net(w
0237デフォルトの名無しさんNGNG
>>236
俺は心機一転派なのでC#のパイオニアを目指すw
0238デフォルトの名無しさんNGNG
そういう意味じゃg++が.net対応して保水
0239デフォルトの名無しさんNGNG
>>238
最強だね。それ。
0240デフォルトの名無しさんNGNG
今あるWindowsの.net frameworkと同等のmonoを作るだけで
最低でも10年はかかるんだろうなぁ。opensource is always late
なんてAlan Coxさんが言ってたけどまさにそんな感じか、、
0241デフォルトの名無しさんNGNG
MC++やろうぜ!
0242デフォルトの名無しさん NGNG
だれも盛り上げないから独り黙々と情報提供

【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

0243デフォルトの名無しさんNGNG
一冊漏れてた
【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/

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

それにしても思ったより少ない気もする・・・
0244デフォルトの名無しさんNGNG
>>243
これからでそ
0245デフォルトの名無しさんNGNG
managed C++でILを吐かせることはできるんですか?
0246デフォルトの名無しさんNGNG
>>245
もちろん。そのための「M」ですから。
0247デフォルトの名無しさんNGNG
>>245
/CLRオプションを付けたときはデフォルトでmanagedコードに
なるみたいですが、managedコード=ILという訳ではないんですよね?
どうもGCとmanagedとILの関係が分らんのです。

x86バイナリにコンパイルされたC++managedコードにGCの機能が含まれて
いるっていう組み合わせもありえるんですよね?
0248デフォルトの名無しさんNGNG
PreJITと実行時ILコンパイルに質的に差がないのは理解してます。

C#に負けるな、あげ!
0249デフォルトの名無しさんNGNG
>>247
/clrでmanaged codeを吐くよ。managed codeって目に見えるものじゃなくて
概念的なものだと思う。ILであることもmanaged codeの一側面ではあるけど。

__gcのクラスはmanaged dataになる。managed dataとmanaged codeの違いは
意外にみんな理解していないようだ。

x86バイナリのlibをリンクしても、それがmanagedになるわけじゃないよ。
CLRはunmanaged codeを実行することもできるんだよね、これも意外に
知られていないが。
0250デフォルトの名無しさんNGNG
>>249
難しいです。なにかよいドキュメントがあればぜひお願いします。
0251デフォルトの名無しさんNGNG
ドキュメントから抜いてきました。

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になる、
ってことですね。


もっと勉強しないと。。。
0252デフォルトの名無しさんNGNG
ms-help://MS.NETFrameworkSDK.JA/csref/html/vclrfunsafe.htm
ところがどっこい、C#ではポインタを使うためにunsafeキーワードを
使うと、アンマネージドになってしまうらしい。

C#ではポインタの使えるマネージドコードというのは記述できないのかな?
それとも上のドキュメントの記述が紛らわしいだけなのか、、
0253デフォルトの名無しさんNGNG
>>252
綺麗に線引きするには内部の動作を把握してないと無理。
だからみなあいまいな説明しかできない。
0254デフォルトの名無しさんNGNG
>>252
アンセーフとアンマネージは違う。アンセーフはマネージコードです。
CLRはマネージコードを実行します。アンマネージコードも一部実行できます。
アンセーフはマネージですから完全にCLRの傘下で実行されます。
0255デフォルトの名無しさんNGNG
>>230
マクロを #undef するよろし。
0256デフォルトの名無しさんNGNG
MC++とJava(JNI)で連携できた。(・∀・)イイ!
0257デフォルトの名無しさんNGNG
.NETとJavaとネイティブコードを混ぜられるのはC++だけ。C++最強!
0258デフォルトの名無しさんNGNG
MC++で COMって書けるの?
厨でrjc
0259デフォルトの名無しさんNGNG
>>258
ATLで /clr をつければできると思う。
0260デフォルトの名無しさんNGNG
>>255
それしかないんだけど、なんかきたないね
0261デフォルトの名無しさんNGNG
MC++やろうぜ!

1はどこいった?(ワラ
0262デフォルトの名無しさんNGNG
↓で 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
*/
0263262NGNG
IL的に面倒なことになってるのでちょっと修正。

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

    this->Size = s;
  }
0264デフォルトの名無しさんNGNG
>>263
FormにSizeプロパティがあるのと関係?
0265262NGNG
>>264
あ〜、そういうことですか。Fontクラスもだめでした。
this->Size と System::Drawing::Size の判断ができないのか・・・。萎え。ヽ(´Д`)ノ
それはともかく、ありがとうございます。
0266デフォルトの名無しさんNGNG
MC++やろうぜ!
http://www.codeproject.com/managedcpp/
0267デフォルトの名無しさんNGNG
age
0268デフォルトの名無しさんNGNG
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")));

0269デフォルトの名無しさんNGNG
>>268
ms-help://MS.VSCC/MS.MSDNVS.1041/vcmxspec/html/vcmg_MacrosandthePreprocessor.htm
0270デフォルトの名無しさんNGNG
あげ
0271デフォルトの名無しさんNGNG
manageC++でダイアログボックスとか使うときは自分でコード書かないといけないのですか?
リソースからボタン貼り付けてボタンダブルクリックするとMFCクラスウィザードとか出てきますが
MFCでしかウィザードは使用できないのですか?
manageC++ではひたすらコード書き込みですか
0272デフォルトの名無しさんNGNG
マネドC++使っている人いますか?
0273デフォルトの名無しさんNGNG
>>272
お前のすぐ上
0274login:PenguinNGNG
普通に使ってますがなにか?

っていいたいところなんだけど、
C#の方が便利だし綺麗だ。
これが現実。
0275_NGNG
ちょっとややこしいよね。そこまでC++に愛着ないし・・・
0276デフォルトの名無しさんNGNG
さらしあげ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1638&forum=7
0277_NGNG
なんかDOS→NTの時の3.1, 95みたいな香りがする。。。
0278デフォルトの名無しさんNGNG
>>276
何だかなあ...
0279あぼーんNGNG
あぼーん
0280デフォルトの名無しさんNGNG
age
0281デフォルトの名無しさんNGNG
盛り上がらんね
0282デフォルトの名無しさんNGNG
managed C++ってなんですか?って聞いていい?
0283デフォルトの名無しさんNGNG
>>282
VC++.NETに付いてるおまけ
0284デフォルトの名無しさんNGNG
>>283
ありがと。
0285デフォルトの名無しさんNGNG
>>284
それで納得するなよ。(w
0286デフォルトの名無しさんNGNG
age
0287デフォルトの名無しさんNGNG

CLR (゚ロ゚) クルァ!!
0288デフォルトの名無しさんNGNG
あげ
0289デフォルトの名無しさんNGNG
age
0290デフォルトの名無しさんNGNG
あげ
0291デフォルトの名無しさんNGNG
↑リンクエラーのことね
0292デフォルトの名無しさんNGNG

      、ヾ''""ツノ,
     ミ ・д・ 彡  <ほっしゅほっしゅ!
     "ミ,, , ; ;;::ヾ
       "'''''""
0293デフォルトの名無しさんNGNG
↑そりゃなんの生き物だ?
0294デフォルトの名無しさんNGNG
ネタが無いのに延々と上げてる馬鹿がいるな
0295デフォルトの名無しさんNGNG
こんな誰も使わないものに膨大な開発リソースをつぎこめるMSは
改めて凄い会社だとおもいます。まる。
0296デフォルトの名無しさんNGNG
C は屑!!
0297デフォルトの名無しさんNGNG
>>296
ネタもないのに上げるなって言ってるだろ
0298デフォルトの名無しさんNGNG
お前の環境はどうなんてっだと、小一時間問詰めたい。
0299デフォルトの名無しさんNGNG
久しぶりに揚!
そして300getは君の手に…
0300デフォルトの名無しさんNGNG
年末もハイだぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
0301デフォルトの名無しさんNGNG
もうこのスレ巡回からはずすよウワァァン
0302デフォルトの名無しさんNGNG
だから上げるのならネタもってこい
無いのなら上げるな
0303デフォルトの名無しさんNGNG
managed C++ってなんですか?
0304デフォルトの名無しさんNGNG
まなげのじょうしき!
0305デフォルトの名無しさんNGNG
>>303
上げるための自作自演uzee
0306デフォルトの名無しさんNGNG
うんこちんちん
0307デフォルトの名無しさんNGNG
CLR だから開発言語は好きで良いってのはお題目で
少なくとも社内では統一しないと駄目だしな。
結局 C# と VB.NET に移行するだけの予感。
0308デフォルトの名無しさんNGNG
ふぅ・・・
0309デフォルトの名無しさんNGNG
なんかMSやばいんじゃない?まじで。
0310デフォルトの名無しさんNGNG
第32章C++マネージ拡張
http://www.microsoft.com/japan/msdn/net/books/ProgVCNET/chapter32.asp
0311デフォルトの名無しさんNGNG
ManagedDXのソースコードを公開してくれれば
流行ると思うんだがなあ・・・
0312デフォルトの名無しさんNGNG
ソースを見なくても基本的にラッパーなんだから同じようなものは作れるだろ
何のためにソースが必要なのか小一時間問い詰めたい
0313デフォルトの名無しさんNGNG
> 基本的にラッパーなんだから

ManagedDXを見てない方がよくおっしゃる。
0314デフォルトの名無しさんNGNG
>>313
ラッパー以外の部分というのを説明できない方がよくおっしゃる。
0315デフォルトの名無しさんNGNG
>>313
見たことないから説明できないんだろ、ほっとけ。
0316デフォルトの名無しさんNGNG
せめて一つのプロジェクトの中にC#とmanaged C++を混在できれば、
既存のC++のソースコードを(managed C++でラップして)流用するのに
都合が良かったのにな。
わざわざクラスライブラリ化するのは、作るのも取り扱いも面倒で嫌。

本当はmanaged C++だけで自分にとっては必要十分だし(普段はすべてUNIXなので)、
これを使いたいのだけどMSが全く力を入れないから困る。
各種サンプルやVisualStudio.NETでのRADとか。
0317デフォルトの名無しさんNGNG
>>311
http://test.saurik.net/anakrino/Anakrino9.zip
0318デフォルトの名無しさんNGNG
これ何?
0319デフォルトの名無しさんNGNG
>>318
ildasmをすごくしたやつ(w
0320デフォルトの名無しさんNGNG
必要なら自前で作るからイラネ
0321デフォルトの名無しさんNGNG
>>320
逆コンパイルしてくれるって知ってる?
0322デフォルトの名無しさんNGNG
もう次のコンパイラが出るわけだが・・・
0323デフォルトの名無しさんNGNG
あげ
0324IP記録実験NGNG
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を提出することがある。
0325デフォルトの名無しさんNGNG
IP売ったりしないですか?
0326デフォルトの名無しさんNGNG


基礎英語聞かなくっちゃwwwwwwwwwwwwww


0327デフォルトの名無しさんNGNG
IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/
0328デフォルトの名無しさんNGNG
ID:ZBsKvw39 が嫌がってるから>>249は効果有りそうだな。
0329デフォルトの名無しさんNGNG
managed C++でプロジェクトを作るとコンソールアプリのスケルトンができてしまいました。
formとかを使いたいとき、C#やVBみたいにツールボックスからドラッグ&ドロップしたいんですけど、
ツールボックス上のアイコンがみんなグレーになってます…。
これってすべてコードだけで記述しないといけないんですか?
0330デフォルトの名無しさんNGNG
中学生ちゃんねるに移民する日はいつ?
0331デフォルトの名無しさんNGNG
 ウェー、ハッハッハ                             イキデキネーヨ
   ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ハライテ- ウェー、ハッハッハ     ウェー、ハッハッハ
.  ( ´∀`) <ZBsKvw39ってヴァカ? ∧_∧       〃´⌒ヽ
.  ( つ ⊂ )  \_______   (´∀` ,,)、     ( _ ;)
   .)  ) )   ○   ∧_∧      ,, へ,, へ⊂),    _(∨ ∨ )_
  (__)_) ⊂ ´⌒つ´∀`)つ    (_(__)_丿      し ̄ ̄し
          タッテ ラレネーヨ ウェー、ハッハッハ
0332デフォルトの名無しさんNGNG
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コンパイラに制御を飛ばすって
意味に取ってるけどどうかな。
0333デフォルトの名無しさんNGNG
ネイティブとマネージ好きな形式が選べる
一つのソース中で混合も可能
0334デフォルトの名無しさんNGNG
======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
────────────────────────────
0335デフォルトの名無しさんNGNG
Yahooトップきました。

http://www.yahoo.co.jp/
0336デフォルトの名無しさんNGNG
あめぞうという昔旺盛を極めた掲示板は「誹謗・中傷・アダルトお断り」の文字を書き込んだ
事が原因の1つとなって潰れたが、いまの2chは「誹謗・中傷・密告お断り」というのを出したのと
同じ事なんだよなあ、、、
0337デフォルトの名無しさんNGNG
動物病院の話はISP法以前で、書き込み者の発言を消さない頃の話
今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
0338デフォルトの名無しさんNGNG
動物病院の話はISP法以前で、書き込み者の発言を消さない頃の話
今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
0339デフォルトの名無しさんNGNG
>>106
どこまでが中傷かどうか判断するのが難しそうっすね、、
>>107
ん?どの書き込みに対してのレスですか?(^_^;)

内容証明が届いて、7日間以内に消さないと、
告訴されても負けちゃう可能性が強いってことになるのかなぁ、、
0340デフォルトの名無しさんNGNG
>>455
DAT形式のログ管理だと大変そうだわな。
0341デフォルトの名無しさんNGNG
西村 博之
「2ちゃんねる」管理人
1976年東京生まれ。
1998年に中央大学(心理学専攻)在学中に
合資会社東京アクセスを設立し、
web制作、システム開発、
システム設計等のプランニングの仕事を始める。
1998年の夏に米国アーカンソー州に留学。
1999年5月に「2ちゃんねる」という掲示板サイトを始める。
2001年6月にイレギュラーズアンドパートナーズ株式会社設立。
地域コミュニティーまちBBSやレンタル掲示板JBBSなど、
コミュニティ関連のサービス提供ばかりしている今日このごろです。

東京都北区赤羽北2-31-16-1311
090-9840-9821(電話は訴訟関係のみ)
0342デフォルトの名無しさんNGNG
Age2ch、かな。
Windows、Linux、ソフトウェア、で今のところ見かけてる。
0343デフォルトの名無しさんNGNG
>530
俺はマンコとかいてるがIPとられても怖くないぞ。もし文句あってもやめないからな!!
0344デフォルトの名無しさんNGNG

おめでとうございます。
こちらこそ宜しくお願いします。
0345デフォルトの名無しさんNGNG

誰も突っ込んでやらないので急にかわいそうになったんだよ・・
0346デフォルトの名無しさんNGNG
>>312
キタ━━━━━(゚∀゚)━━━━━!!!!
0347デフォルトの名無しさんNGNG
N速なんか一番腐った板なんだからちょうどいいんでないの。犯罪者予備軍
うようよいるだろうし
0348デフォルトの名無しさんNGNG
ほぅ
0349デフォルトの名無しさんNGNG
犯行予告・個人や法人に対する誹謗中傷
内部告発・差別的発言・タメ口・顔文字

ぐらいかな
0350デフォルトの名無しさんNGNG
スレ立て人にも匿名性を持たせるらしいよ、今後
0351デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0352デフォルトの名無しさんNGNG
正直、杞憂。
0353デフォルトの名無しさんNGNG
海外国籍の人!運営しなよ。
管理人は以前TVでいつでも、譲りたいって言ってたし。
0354デフォルトの名無しさんNGNG
そそ、で本当にヤバい話なんてどれくらいあるかといえば(略
0355デフォルトの名無しさんNGNG
じゃなに、今までは何でも言える時代だったって訳?
0356デフォルトの名無しさんNGNG
2chをはけ口にしていた人はどこで憂さ晴らしをするのか少し興味ある
0357デフォルトの名無しさんNGNG
ワリィ、それの元ネタなにさ?
0358デフォルトの名無しさんNGNG
逆に立てて欲しくなかったんだが(w
0359デフォルトの名無しさんNGNG
>類似発言を連呼すればグレーゾーンに入りますね。
で、何でそれをお前が決めるんだ??
0360デフォルトの名無しさんNGNG
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 
0361デフォルトの名無しさんNGNG
名無しは強制フシアナ(串は強力に規制)。
フシアナが嫌なら有効メアド入力。
両方とも嫌なら●購入。
これくらいやればユーザーは10分の1くらいに減るかな。
0362デフォルトの名無しさんNGNG
エスパー伊東
0363デフォルトの名無しさんNGNG
名誉毀損ってのは "事実" であっても該当するのは周知の事実ですよね。
(ただし、公共の利益になる場合はこの限りではないのだけど)

事実誤認のレスで 名誉を毀損された =営業的な不利益が生じた のであれば
確かにレスが事実誤認であることを証明するのは 原告側。

しかし その反証の場が 2ch でなくてはならないというのは ? です。

今や 2ch は管理人の個人サイトとは判断されないほど メディアとしての
認知・影響力が裁判所で認定されているですから
公序良俗に反する情報発信は情報の発信者が責任を負うべきでしょう。
その発信者の情報をわざと特定させないのは 
ある意味、確信犯的な共犯者と見なされても仕方ないでしょ。

(もちろん、Internet の匿名性 については十分、議論の余地はあります。)
0364デフォルトの名無しさんNGNG
引き続き gamble 行きます。
0365山崎渉NGNG
(^^)
0366デフォルトの名無しさんNGNG
 4nd
フォンドボー?
0367山崎渉NGNG
(^^)
0368デフォルトの名無しさんNGNG
緊急浮上!!
0369デフォルトの名無しさんNGNG
>>368
上げるならネタを出せ、無能者
0370山崎渉NGNG
(^^)
0371山崎渉NGNG
(^^)
0372デフォルトの名無しさんNGNG
なんでこのスレは厨房が多いんだ?
0373デフォルトの名無しさんNGNG
あげ
0374デフォルトの名無しさんNGNG
>>373
上げるならネタを出せ、奴婢
0375デフォルトの名無しさんNGNG
/clr付けるとフツーのC++コードもILで吐かれるんですね
これってパフォーマンス上のペナルティはないんでしょうか
(インライン化を阻害するとか)
(1)全部managed(JIT様を信じる)
(2)__gcの絡むところだけを#pragma managedして、
残りは#pragma unmanagedにする
どっちがいいですかね
0376デフォルトの名無しさんNGNG
age
0377デフォルトの名無しさんNGNG
>>376
上げるならネタを出せ、奴婢
0378デフォルトの名無しさんNGNG
もう一度・・・浮上するんだ!!
0379デフォルトの名無しさんNGNG
勃起age
0380デフォルトの名無しさんNGNG
Bug Alert: Visual C++ .NET Loader Lock Issue
http://msdn.microsoft.com/visualc/techinfo/articles/loaderlock/default.asp
0381デフォルトの名無しさんNGNG
結局使ってる人はいないという,,,,,,,
0382デフォルトの名無しさんNGNG
>>381
MS社内開発者専用ツール
0383デフォルトの名無しさんNGNG
VC++.NETのCD2枚目の
\Samples\VC\Extensibility\AppWizards
にコンソール用のアプリケーションウィザードと
ManagedC++WindowsFormのアプリケーションウィザードがある。

わざわざ別にしなくてもいいのに。
0384山崎渉NGNG
(^^)
0385山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0386デフォルトの名無しさんNGNG
 
0387デフォルトの名無しさんNGNG
WindowsFormデザイナキタ━━━━━(゚∀゚)━━━━━!!!!


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

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

Managed C++、思ったより使えそうな感触。
0408デフォルトの名無しさんNGNG
>>407
そのための MC++ です
日本語の参考書籍・・・無いよなあ・・・
0409デフォルトの名無しさんNGNG
無いっすねえ..

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

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

またドキュメントビューアーキテクチャを
マネージドシープラで実現することは可能ですか?
0411デフォルトの名無しさんNGNG
★クリックで救えるオマ○コがあるらしい★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0412デフォルトの名無しさんNGNG
>>410
間にラッパークラスを挟めば可能
0413デフォルトの名無しさんNGNG
MFC 使ったやつとかよりも
API じか叩きしたようなのほど効果有るっぽい。

ところで参照渡しすれば C# で ref する扱いになるみたいだけど
out する扱いは無理ぽ?
ref だけで用事足りるからどうでも良いっちゃ良いのだけど
なんか無駄に気になったので。
0414デフォルトの名無しさんNGNG
void WndProc(Message *m)
{
  if (m->Msg == WM_NOTIFY)
  {
    LPNMHDR nmhdr = (LPNMHDR)m->LParam;
  }
}

Managed C++でこういう感じにキャストしたい場合は、どういう方法でやればいいんでしょうか?
dynamic_castなどでもだめでした。。
0415414NGNG
(LPNMHDR)m->LParam.ToPointer();
で出来ました。。
0416デフォルトの名無しさんNGNG
ほう。なるほど。
0417デフォルトの名無しさんNGNG
.NET C++ でWindowsフォームアプリケーションでウィンドウメッセージを捕まえるにはどうすればいいでしょう?
解像度変更を検出したいんだけど・・・。
0418417NGNG
[System::Security::Permissions::PermissionSet(System::Security::Permissions::SecurityAction::Demand, Name="FullTrust")]
void WndProc(Message* m) {
// ...
}
ヘルプにはFormでWndProcをオーバーライドすると書いてあるんですが、
オーバーライドすると' マネージ型で、仮想メソッドへのアクセシビリティを少なくすることはできません。」
とエラー吐かれます。
そもそも1行目の [System::Security... は何を意味するかと子一時間...
0419デフォルトの名無しさんNGNG
何で参照渡しをポインタにしているのか小一時間...
0420417NGNG
protected:
 void WndProc(Message* m) {
  // ...
 }
これだけでいけますた。
さっきのエラーはprotectedで宣言された仮想関数をprivateには出来ねーぞって事でした。
0421デフォルトの名無しさんNGNG
保守
0422デフォルトの名無しさんNGNG
>>388
ほんとだ使えるようになってる。

MC++で
インデクサとforeachは使えないのでしょうか?
(演算子がC++の時のようにオーバーロードできないような...)
0423デフォルトの名無しさんNGNG
サンプル作ってみた

#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;}
};
0424422(続き)NGNG
__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;
0425422(続き)NGNG
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;}
0426デフォルトの名無しさんNGNG
Quake II .NET
http://www.vertigosoftware.com/Quake2.htm

カコ(・∀・)イイ!
0427デフォルトの名無しさんNGNG
managed Age++
0428デフォルトの名無しさんNGNG
マネージドなクラスをSTLのコンテナに入れることは、できないみたいだな。
0429デフォルトの名無しさんNGNG
COBOLだけはガチ!
0430428NGNG
gcrootを使ってできた。
0431デフォルトの名無しさんNGNG
>>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() );
0432デフォルトの名無しさんNGNG
>>431
http://pc2.2ch.net/test/read.cgi/tech/1058618416/
0433デフォルトの名無しさんNGNG
>へー。
>こんな感じでやってみたけどOKだった。
読んだ瞬間ダメだったのかと思って焦った。

ところでこのToString()はいらないよ。
>Console::WriteLine( v[23]->ToString() );
0434デフォルトの名無しさんNGNG
>425
static_castでいいのかな?
dynamic_castで型のチェックした方がいいと思うんだが。
0435425NGNG
>>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 );
0436デフォルトの名無しさんNGNG
http://homepage2.nifty.com/MXC03711/mc/managedcpp.htm
0437山崎 渉NGNG
(^^)
0438デフォルトの名無しさんNGNG
MSDNのXmlSerializerにあるサンプルをMC++で試しているのですが、
__gc struct Address{
[XmlAttribute] String *Name;
};
の[XmlAttribute]のアトリビュートだけがなぜか見つからないと出ます。
解決策はないのでしょうか?

(他の属性はSystem.Xml.dllを参照の追加してOKでした)↓
[XmlElementAttribute][XmlArrayAttribute][XmlRootAttribute]

0439デフォルトの名無しさんNGNG
そりゃXmlAttributeAttributeじゃな。たしかに紛らわしいけど。
最初のAttributeはXMLの属性のことで、次のAttributeは.NETの属性のことじゃ。
0440デフォルトの名無しさんNGNG
>>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+でどうなるのかは試してないです。
0441山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0442デフォルトの名無しさんNGNG
checkedステートメント
は使えないのでしょうか?
0443デフォルトの名無しさんNGNG
>442
使えないようですね。
0444デフォルトの名無しさんNGNG
age
0445デフォルトの名無しさんNGNG
昔ドキュメントビューアーキテクチャでC++あきらめました。
Del厨です。
最近C#がだいたい使えて来たので、
MC++→MFC→非MFCと言う順番に学習したいと思ってます。
C♯→MC++移行で参考になるようなサイトないでしょうか。
たとえば、初心者はC♯よりもVBよりもMC++なら将来ネイティブアプリ作れるとか、
たとえばC++なのに.NETなら簡単にブラウザを作れるみたいな。
無理?
0446デフォルトの名無しさんNGNG
→非MFCは別にいらんとおもうけどなあ
0447デフォルトの名無しさんNGNG
>MC++なら将来ネイティブアプリ作れるとか
カエレ!
0448デフォルトの名無しさんNGNG
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 ....
0449デフォルトの名無しさんNGNG
おい!
managedC++はなんでフォーム継承できないんだ?????
0450デフォルトの名無しさんNGNG
VBやC#からでも簡単にCOMが呼べることを知って、MC++を使わずにATLで
コンポーネントを相変わらず書いている私は逝ってヨシですか?

移行するタイミングが難しいんだあ。
0451デフォルトの名無しさんNGNG
Managed C++は次のバージョンで文法が全く別物になります。
0452デフォルトの名無しさんNGNG
仕様書のドラフト版出たよ。
ttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++%20CLI%20Candidate%20Base%20Draft.pdf
0453デフォルトの名無しさんNGNG
MFCとどっちが仕事になりますか
0454デフォルトの名無しさんNGNG
>>450
結構居るみたいですよ、そんな人。逆もできるしね。
.NETの相互運用能力ってちょっといい感じ。お気に入りです。
0455デフォルトの名無しさんNGNG
人気ないなぁ・・・

>>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な書式のキーワードはうんざりだからな
リリースはいつごろだろう
0456デフォルトの名無しさんNGNG
てか、CLIヒープクラスって言い方は違うのかな
クラスの種類にかかわらず、newもgcnewもできる?
もう少し読もう
0457デフォルトの名無しさんNGNG
単にref classと言えばいいのか?
C++のリファレンスとの関連性はあるんかな
もう少し読もう
0458デフォルトの名無しさんNGNG
ちかれた・・・。
やっぱ単に__gc → refか。
for eachはよいね。
0459デフォルトの名無しさんNGNG
>CLIヒープクラスも指定子がrefになって、見た目に分かりやすいな

この時点で、

__gcクラスも指定子がrefになって、見た目に分かりやすいな

と言えばよかっただけか。
てか、誰もいないじゃん。一人芝居ショボン
0460デフォルトの名無しさんNGNG
以前、「managed C++は整数もかならず整数オブジェクトになる」と言われますた。

そのときはアホな設計だなぁ、と思ったのですが、
手元にあるショボイ入門書を見ると「単純型」というのがあるので、
これが Javaでいうプリミティブ型に相当するのではないかと思うのですが、
実際のところどうなんでしょうか。教えて Teach Me
0461デフォルトの名無しさんNGNG
>>460
そうだよ
value classのこと
Javaより柔軟だから
0462461NGNG
と、思ったが何か違うな

そもそも、「managed C++は整数もかならず整数オブジェクトになる」んだっけ?
教えて Teach Me
0463461NGNG
多少こんがらがったが、

Managed C++ ≒ Java
__value class≒primitive type
__gc class≒class
__box(__value class)≒class Wrapper { primitive type member; }

こんな感じ

0464デフォルトの名無しさんNGNG
>>460
javaで言うところの、primitive型とclass型の間を、比較的簡単に
行き来できるのが.NET系の言語の特徴。

MC++でもそれを利用できるが、intと書いただけでIntegerオブジェクトが
生成されるわけではない。

value型とclass型の違いはCLRでも重要な事項なので、
MC++に触れる前にしっかり理解しておいたほうがいいと思う
0465デフォルトの名無しさんNGNG
アンマネージドコンテキストに限定して書いてるのかもしれないけど、
MC++でも、intはSystem::Int32 value type(simple type) だと思うよ

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

出版社を探して自分で翻訳;-p
0471デフォルトの名無しさんNGNG
一冊全部MC++って、話題もつの?
0472デフォルトの名無しさんNGNG
http://www.amazon.co.jp/exec/obidos/ASIN/0735617244/
http://www.amazon.co.jp/exec/obidos/ASIN/1893115283/
このへんかな。前者は持ってる。
0473デフォルトの名無しさんNGNG
これはC++じゃないと思った。
0474デフォルトの名無しさんNGNG
さすがに濃い内容ですなあ。
ttp://weblogs.asp.net/slippman/
0475デフォルトの名無しさんNGNG
>448
かな〜り遅いレスだが、これは msvcrt.lib, msvcrtd.lib をリンクすればいい
でも、なるべく #pragma unmanaged のエリアで使おう
0476デフォルトの名無しさんNGNG
ところで、漏れの質問なんだが boost::spirit をアセンブリにして利用したくて
managed C++ で boost::spirit のC構文のサンプルをコンパイルしたんだが、
C1129 つーエラーが出て歯がたたねぇ

普通のC++としてはサンプルは無事動くのに、managed C++ じゃテンプレートの
展開が違うのか?
0477デフォルトの名無しさんNGNG
>476
自己解決。boostをインクルードしているとこまでまとめて unmanaged 指定してやったら
コンパイルは通過。ただし、リンクエラーLNK1254でだめぽ
r'⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒ヽ ⊂゙⌒゙、∩
ヽ__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__ノ  ⊂(。Д。)
0478デフォルトの名無しさんNGNG
.NETも従来のC++も使いたいんだけど
コードの中で混在させる事は出来ますか?
.NETは資料が少ない(C++の場合)ので、自分にはメインでは使えないのですが
簡単にスレッド起こせたり、フォームの半透明とかが簡単だったりするんで・・・
0479デフォルトの名無しさんNGNG
混在可能。

> 自分にはメインでは使えないのですが
> 簡単にスレッド起こせたり、フォームの半透明とかが簡単

そういう部分をメインというと思うんだがどうか。
0480デフォルトの名無しさんNGNG
質問です。

C#で
Byte[] sendBytes = Encoding.ASCII.GetBytes("01"+textBox1.Text+" "+textBox2.Text+"\0");
こんな感じで書いてたコードを
managedC++で書き直したいのですが
どうすれば良いのでしょうか?
Byte sendBytes[] = Encoding::ASCII->GetBytes("01" + textBox1->Text + " " + textBox2->Text + "\0");
これだと、ポインタにポインタが足せないと言われてしまいます。
0481デフォルトの名無しさんNGNG
>>480
地道に String::Concat かな?
0482デフォルトの名無しさんNGNG
文字列4つまでは Concat で一度に連結できるようだ。
0483デフォルトの名無しさんNGNG
どうもです。
とりあえず
sprintf(buf2,"01%d %d\0",textBox1->Text,textBox2->Text);
としました。。。(Cの知識しか殆ど無かったりします。
0484デフォルトの名無しさんNGNG
%sの間違いです。
0485483NGNG
またまたすみません。。。
>>480で書いたC#のコードと
>>483でやったコードの結果が違うようです。
一応、この文字列をUDPでサーバーへ転送するのですが
サーバー側でフフフという文字が大量に発生してしまいます。(\0が無い為?
何故このような事がおきるのでしょうか?
0486デフォルトの名無しさんNGNG
sprintf(buf2,"01%d\n %d\n\0",textBox1->Text,textBox2->Text);
こんな感じで\nを付けてみ
0487483NGNG
>>486
どうもありがとうございます。
無事出来ました。
0488デフォルトの名無しさんNGNG
namespace 会社名.プロジェクト名
{
  public class ホゲホゲ
  {
  }
}

C#で上のように書いたコードを Managed C++ で書き直した場合どうする?

namespace 会社名.プロジェクト名
{
  __gc class ホゲホゲ
  {
  };
}

って書けない?
namespace を一発で書くような方法をきぼんぬ。
0489デフォルトの名無しさんNGNG
IPEndPoint *RemoteIpEndPoint = new IPEndPoint(IPAddress::Any, 0);
Byte receiveBytes[] = udpClient->Receive(&RemoteIpEndPoint);
String *returnData = Encoding::ASCII->GetString(receiveBytes);
MessageBox(NULL, returnData, "", MB_OK);


こんな感じで受信結果をMessageBoxで表示したいのですが
型が違うため出来ません。
どのようにすればいいのでしょうか?
0490デフォルトの名無しさんNGNG
・どの行でエラーになってるのか
・エラーの詳細
を書け
0491489NGNG
MessageBox(NULL, returnData, "", MB_OK);
ここで
error C2664: 'MessageBoxA' : 2 番目の引数を 'System::String __gc *' から 'LPCSTR' に変換できません
        マネージ型をアンマネージ型に変換できません。

です
0492489NGNG
とりあえず
sprintf(RevBuf,"%s",returnData);
こんな感じで、無理やり変換しましたけど。。。
なんだかなぁ・・・
0493デフォルトの名無しさんNGNG
>>489
String型をC文字列に変換するメソッドがあると思うけど。
0494デフォルトの名無しさんNGNG
う〜む・・・
なんでMC++はこんなに普及しないんだ?
時期OSの仕様がああなった以上、.NETは避けて通れない道
現に、C#の書籍や情報はあちこちに溢れてる

でも、C++で.NETってのがこんなに普及してないのが不思議でしょうがない。
なんでだろう・・・・・
俺も勉強したくても書籍はないわWebにも殆ど資料ないわ、MSDNにはC#とVB.NETのみだわで大変

もしかしてC#の方が楽って事?
Win32APIやMFCで作った過去の遺産を使いたいって人も居ると思うんだが・・・
0495デフォルトの名無しさんNGNG
VisualStudio.NET2002では、ManagedC++でのフォーム作成がGUIでできなかったって
聞いたことあるけどホントですか?
0496デフォルトの名無しさんNGNG
VisualStudio買わないとVC++の最適化コンパイラが手に入らないのが(´・ω・`)
0497デフォルトの名無しさんNGNG
>>494
MC++とはまた別のものを作ってるという話もあるよ
0498デフォルトの名無しさんNGNG
C++/CLIでそ
MC++はつなぎなんじゃないの
0499デフォルトの名無しさんNGNG
C#の方が256倍マシ
.NETでマネージドC++なんか使ってるやつの気がしれない
0500デフォルトの名無しさんNGNG
情報量の少なさに耐えかねてMC++見限ってC#に行きました。。。
これもMSの計略か・・・・
0501デフォルトの名無しさんNGNG
C++はネイティブのオブジェクト指向言語というだけの価値しかないわけだし。
ネイティブじゃないなら存在意義が無いし
0502デフォルトの名無しさんNGNG
んー、でもXMLシリアル化とか結構魅力なんだよねー。
0503デフォルトの名無しさんNGNG
MC++はラッパとしての価値がメインなんじゃね?
COM化するのが正統なんだろうけど、それもメンドいことあるし。
0504デフォルトの名無しさんNGNG
>488
それは漏れも悩んだが駄目らしい

boost みたく

namespace boost { namespace spirit {

}}
と書くことにしてる。こういうところこそ拡張してほしかったんだが
0505デフォルトの名無しさんNGNG
newがあるのに対になるdeleteが無いのはおかしい
前のドアがあるのに裏口が無いようなもの
0506デフォルトの名無しさんNGNG
>>565
テレビで食事は放送しても排泄は放送しないだろ。
0507デフォルトの名無しさんNGNG
>>565は排泄ネタを振ることを運命付けられてしまったわけだが
0508デフォルトの名無しさんNGNG
確かにnewじゃなくてinitとかの方が自然だ。
0509デフォルトの名無しさんNGNG
>>505
入るときにはどのドアに入るか自分で選ばないと駄目だけど、
出るときは自動排出。
0510デフォルトの名無しさんNGNG
つうかさ、newなんているの?
A a;
a = A( 3);
これでよくない?
0511デフォルトの名無しさんNGNG
ぶっちゃけ
型や構造体と同じ使い方で良い
0512デフォルトの名無しさんNGNG
>510
Test test(80, 100);

こういう宣言ができれば、new 無しでもいいんだよなぁ
ref もあるわけだし、受け渡しで困るわけで無し
(´-`).。oO(・・・なんでマネージド型はポインタじゃないといけないんだろう)
0513デフォルトの名無しさんNGNG
値型はポインタではないのでは?
0514デフォルトの名無しさんNGNG
値型の参照で操作することに統一してはあかんの?
0515デフォルトの名無しさんNGNG
>513
マネージド型って値型で作成できるの?
__gc が付くクラスは new しないと駄目よってエラーが出るんだけど
0516デフォルトの名無しさんNGNG
>>515
__value 使え
0517デフォルトの名無しさんNGNG
>>515
__value struct V {
int i;
int r;
};
とか。
0518C ◆dZiiJEl1F6 NGNG
>517
それはちゃんと参照渡ししてくれるの?
値渡しでは意味なさそうだが・・


0519デフォルトの名無しさんNGNG
>516-517
IsValue を入れると付くやつだよね?
これってマネージド型とは排他的だと思うんだけど
0520519NGNG
マネージ型の基本事項、制限事項読んできた
('A`)マンドクセ ・・・MC++の存在意義を見失いそうな気分です
0521デフォルトの名無しさんNGNG
>>520
>MC++の存在意義
既存コードの流用が簡単ってこと以外、MC++に意義なんてあったっけ?
0522デフォルトの名無しさんNGNG
>>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;
}
0523デフォルトの名無しさんNGNG
>521
既存コードの流用もCOMにしておいた方が便利だし、あまり利点になってない
既存C++のパワーと.NETライブラリの融合を期待していたのに_| ̄|○
0524デフォルトの名無しさんNGNG
>>504
レス、サンクス!
質問の意味が分からず、総スカン食らったのかと思たよ。

けど、やっぱ、ダメなのね。

これが煩わしいのと、
C#でいうところの param が指定されたメソッドを呼び出すのが煩わしいのがあって、
MC++は、本格的に利用できないね。

さらに次のバージョンではC++ CLIになるし、
個人的に、MC++はボツかなぁ....。
0525デフォルトの名無しさんNGNG
WinFX C++CLI
.NET MC++
ということ?
0526デフォルトの名無しさんNGNG
C#でいいじゃん
なんでC++にそこまで執着するわけ?
もうC++ CLIも要らないよ
0527デフォルトの名無しさんNGNG
C++には夢があるんだよ、夢が。
特にtemplateの夢はC++プログラマなら離れられないものなんだよ・・・。
0528デフォルトの名無しさんNGNG
>>527
いまどきテンプレートだって。
Visio 使えよ Visio! プ
0529デフォルトの名無しさんNGNG
>528
最近の Visio はすごいんだな((;゚Д゚)ガクガクブルブル

>526
template に関しては Generic で C# でもサポートされるところがあるから、微妙かな

ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w
だから、C++ はあくまで限りなく標準のままに .NET との親和性を深めてホスィ
0530MaccroSoftNGNG
>>529
信じよされば巣食われる。
0531デフォルトの名無しさんNGNG
> ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w

だからC#使うんだよ。ECMA標準。もうすぐISO標準。
0532デフォルトの名無しさんNGNG
C++も、MFCによって成長した感があるから、あんまり変わんないや・・・

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

C#の標準化ってCILも含めてなの? それとも言語仕様だけ?
0535デフォルトの名無しさんNGNG
文法だけ。CLI含まず。
0536デフォルトの名無しさんNGNG
>>534
MFC厨だとありえるが・・・
0537デフォルトの名無しさんNGNG
>535
そっか。ごめん漏れにはやっぱりMSは信じ切れないよ(´・ω・`)
C++ CLI が来るまで待つかぁ

>536
恐ろしい話だ・・・
0538デフォルトの名無しさんNGNG
>>537
C++ CLI出ても、それはMS主導だから一緒でしょ
0539デフォルトの名無しさんNGNG
MFCやCOMですら既に十年以上続いてるわけだが
信用できないとか言ってる奴はアフォか?
0540デフォルトの名無しさんNGNG
まぁ、結局MFCやCOMをバカにしてるのは、
Windowsの動作そのものを理解してないやつばっかり。
0541デフォルトの名無しさんNGNG
>>540
すみません、Windowsの作者ですがMFCやCOMを馬鹿にしてますが何か?
0542デフォルトの名無しさんNGNG
>>541
ああ、あなたがあのブサイクなメガネチビ・・・
0543デフォルトの名無しさんNGNG
カトラー様を侮辱する気か!
0544デフォルトの名無しさんNGNG
CPUの研究者にはフォンノイマン症候群ってものが
あるらしいけど、OS板の香具師はデビッドカトラー
症候群ってものがあるのかな。カトラーだって
MachのアイディアをMSに持ち込んで、そこから設計したって
いうのにね。OSASK。。。
0545デフォルトの名無しさんNGNG
#include <atlbase.h>
するとこんなエラー出るんですけどどうにかならんですか?

error LNK2020: 未解決のトークン (0A00000B) atexit
error LNK2020: 未解決のトークン (0A000012) ??_7type_info@@6B@
error LNK2020: 未解決のトークン (0A00001A) free
fatal error LNK1120: 外部参照 3 が未解決です。

CComPtr とか使いたいのに
0546デフォルトの名無しさんNGNG
>545
>475
0547545NGNG
ありがと〜(^ー^)/
たすかりますた!!
ここはいいインターネットですね。
0548デフォルトの名無しさんNGNG
Win32 Platform SDKと.NET Framework SDKとは共存できないのでしょうか?
前者を入れた後に後者を入れると前者のドキュメントの目次等が表示できなく
なるのです。解決策等ご存知でしたら、ご教示願います。
0549デフォルトの名無しさんNGNG
>>548
漏れもそれなった。PSDK入れた後に.NETSDK1.1を入れたら。
とりあえず不具合はそこだけなので、そのまま放置してます。
0550デフォルトの名無しさんNGNG
素直にVS買えよ
0551548NGNG
自己レスです。逆順でインストールしたら解決しました。
0552デフォルトの名無しさんNGNG
C++/CLI ってどこかに情報あるの?
Wedbey のところじゃ、__gc が ref になるとかSTLとの親和性が上がるとかの
断片的な情報しかないんだけど、ECMAに仕様を提出して標準化するって書いてあるから
今のうちにMC++との違いを認識しておきたいんだけど

とりあえず、ロードマップの日本語版
ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/roadmap.asp
0553552NGNG
いちおう、こんなん見つけた

PDFなんで注意
ttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++%20CLI%20Candidate%20Base%20Draft.pdf
0554デフォルトの名無しさんNGNG
>535
このPDF見ると、CLIもECMA,ISO/IECに標準化するのね
0555デフォルトの名無しさんNGNG
っていうか、そこまでしてC++に執着してC++/CLIに移行するメリットあるのかな・・・
素直にC#に行った方が飯食える気がする・・・
っていうか、C++/CLIって出る前から雲行き悪すぎるし、話題にすら殆ど上がって無いあたり。。。

MSは次期OSは.NETで統一するんだし(決定済み)
.NETの為に作成したC#が一番.NETが使いやすいんだし(事実)

こう考えると、C++にいくら自分が残っても、飯食うために使う事は出来ない気がするんだけどなぁ・・・
0556デフォルトの名無しさんNGNG
死滅スレのノリですな
0557デフォルトの名無しさんNGNG
managed C++は既存のC++で組まれたアプリケーションを.NET環境に移行するためのものだね。
(そういう需要があるかとか、移行がスムーズにいくかはさておき)

新規の開発でmanaged C++を選択する必要性や動機はほとんど無いだろね。
>555が書いてるように、C#で開発した方が生産性高い。
C#が選択肢になりえない対象の場合は、managed C++も選択肢にほぼなりえない。
0558デフォルトの名無しさんNGNG
ネイティブコードとマネージドコードの「つなぎ」に使うためのものじゃないのか?>MC++
0559デフォルトの名無しさんNGNG
つなぎというのが何を指してるのか今市よく分からんが
マネージドコードからアンマネージドなコードを呼ぶだけなら
なおさらMC++である必要はない罠
0560デフォルトの名無しさんNGNG
なんでそこまで 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 なだけで
0561デフォルトの名無しさんNGNG
反発してるんじゃないんだよ
(本来の)C++や、MC++、C#などを一通りやった上で
ネイティブアプリケーションに比べると、いくらか足枷が出来てしまう
.NETアプリの開発ではC++の生産性の悪さが目に付いてしまうだけ
現状の.NET Frameworkだとネイティブアプリだと普通に出来ることを
実現するのに様々なトリックが必要になったりするからね
あと、MSが一番力入れてるのはC#だろう
MC++については既存の開発者の移行を促すと言う意味では賛成だが
あくまで移行のための言語であって、主力になりえるとは到底思えない
0562デフォルトの名無しさんNGNG
MC++ に関しては移行のためにとりあえずやっつけで作ったものだけど、開発者の
理想としては、従来の VC++ で組んだアプリがそのまま CLR 上に載ることでないの?
それが実現できれば、アンマネージドな軽快さとマネージドの堅牢性があいまって
最強の環境になると思うんだが
とりあえず、MS はその方向へ向かおうと努力しているように見える(と信じたい)

もちろん、.Net の開発環境として最適なのは C# って点には同意するし、漏れも C# は
大好きだ
0563デフォルトの名無しさんNGNG
現状として
> 従来の VC++ で組んだアプリがそのまま CLR 上に載る
ということはないし、実際
> MS はその方向へ向かおうと努力している
ということもないように私は思う。将来的にはWin32の方が
ネイティブではなくなり、エミュレータ上で動くようになって、例え
> Longhorn でのアプリが .Net とネイティブ C++に2局化してしまう。
としても、結局は後者の(高速性等の)メリットはなくなってしまう
であろう。
結果として、managed C++で.Netを学びつつもその扱いにくさを
感じ、その後C#を学んで言語・APIセットともに移行が完了すると
いう順序をMSは目論んでいるのであろう。すなわち、managed C++は
C# & WinFXに向かうための迂回路の1つとして用意されているに
過ぎないと考えられる。

しかし、例えばWin & Macなどクロスプラットフォームで作っている
サードパーティのために、Mac動作の.Net環境をMSが作るかどうか…。
0564デフォルトの名無しさんNGNG
MC++とC++/CLIって別物ですか?
0565デフォルトの名無しさんNGNG
>564
MC++ が移行準備段階で、C++/CLI が移行中な感じ
個人的には WinFX が来るのと同時に、C++/CLI がもう一つ構成が変更されるように思える

MC++ が既存の C++ に マネージド型を扱うためのキーワードを追加してなんとかやりくり
しようとしているのに比べて C++/CLI の方は CLR との相互やりとりのエリアを扱うハンドル
型を追加したりして、Heap Alloc と GC Heap 上のエリアを並立させようとしている模様

詳しくは上の Candidate base でも呼んでちょ
0566デフォルトの名無しさんNGNG
>563
Mac 用の Office とかがあるから、公開するかはともかく CLR は作るんじゃない?
Office は .Net 化するらしいから、ソース管理を考えるとブランチ分けするよりは CLR
を作るかと
0567デフォルトの名無しさんNGNG
>563
Java の失敗から見てもわかるとおり、アンマネージドな部分の要求は決してなくなることは
ないと思う。(私にとってだが)業務用の主となる解析や描画、Design 演算はまずマネージド
にならないだろうし、既存の資産との流用性からアンマネージドな部分を作り、接続する言語は
必要だ

まず、この点は認めてもらえるだろうか?

その上で、マネージドとアンマネージドな領域を自在に行き来できる言語として MC++
(は駄目だけど、その先のC++/CLI)があるのではないかと思う
これは開発者にとって充分に魅力的だと思うんだが、違うかなぁ

なんか昔の PureJava 論議みたいになってきた気がするが(w
0568デフォルトの名無しさんNGNG
マネージドとアンマネージドな領域を「自在に」行き来できるなら
価値あると思うよ
今のはおよそ自在とは言えない代物だからね

0569デフォルトの名無しさんNGNG
MC++は、既存ライブラリを.NET向けにwrapするための
thin wrapperを作るためのもの、にしては
あまりにリッチだと思うぞ。

そこにそんだけリソースを費やせるのはMSぐらいのもんだろうけど。

Javaの失敗というのには同感。JNIははっきり言って拷問。
MC++の自在っぷりは異常。.NET語とC++語とマシンコードを
同時に解釈できるのはなにげにすごいぞ。
0570デフォルトの名無しさんNGNG
議論以前にMC++普及してないじゃん。。。
日本語の参考書籍が1つも無い状況っすよ?
こんなのでは勉強もやりにくいし・・・

もうわざわざC++使う必要もないんじゃないかな・・・
既有技術そのままで実装出来るとは思えないし・・・
0571デフォルトの名無しさんNGNG
VS.NET系のVC本にはMCの解説を入れているものが、私の知る限りで5冊はあるけど。
いったいどんな田舎に住んでるんだろう?
0572デフォルトの名無しさんNGNG
日本語でないと読めない奴はだまってC#とVBで下請けやってればよい
0573デフォルトの名無しさんNGNG
こんなの勉強しなくても普通に使えるだろ。
なにをそんなに慌ててるのかしらんが。
0574デフォルトの名無しさんNGNG
>>571
まぁ、5冊だけどな
資料が少ないってのは事実っしょ。
普及してないってのも事実だし。

正直、C#に行かずにMCにとどまる理由は、移行のためのラッパー書くのみっしょ
それ以上の使い道ないから、移行が完了すると、もう使う事もないでしょうし
0575デフォルトの名無しさんNGNG
JNIがアホすぎたんだよな
0576デフォルトの名無しさんNGNG
Whidbey の Community Technology Preview のコンパイラだが、C++/CLI も
コンパイルできるっぽい

ふつうに Whidbey のプロジェクトから /clr のオプションをつけると /clr:oldSyntax と
なって C++/CLI の構文はエラーになるけど、コマンド・プロンプトで cl /clr とやって
コンパイルを通ると、動いたよん
0577デフォルトの名無しさんNGNG
質問です。
クラスのインスタンスを作る時に
グローバルな領域において置きたいのですが
MC++だと関数の中でしかインスタンスを作れません。

どうすれば各関数から共通のインスタンスを使う方法を実現出来るのでしょうか?
0578デフォルトの名無しさんNGNG
>>577
まずはsageを覚えろ。
0579デフォルトの名無しさんNGNG
>>577
その次にシングルトンを覚えろ。
0580デフォルトの名無しさんNGNG
>>577
出来ない。
設計見直せ。
何のためのnamespaceであり、何のためのクラスか知るべし

どうしても共通のインスタンスが必要ならば
0581デフォルトの名無しさんNGNG
途中で送信してしまった・・・
どうしても必要ならば
と思ったけど、もう>>579で答え出てるか・・・
0582デフォルトの名無しさんNGNG
ここってsage進行なんですか?
よく分からないのでとりあえずsageで・・・

え〜と、質問なのですが
VC++.NETでMC++でコード書いてるのですが
今までSDKでやってたので、.NETではウインドウプロシージャはどうなってるのでしょうか?

と言うのもWinsockのWSAAsyncSelect()を使いたくて、メッセージを受信したいのです。
0583デフォルトの名無しさんNGNG
なんでVC++.NETがあるのにMSDNを読もうとしないんだろう
0584デフォルトの名無しさんNGNG
>>583
とりあえず半日調べての質問です。。。。
すみません、探し方が悪いとは思うんですが、キーワードも適切なのが見当付かずに・・・
0585デフォルトの名無しさんNGNG
>584

void System::Windows::Forms::Control::WndProc(Message* m);

次は、メッセージが定義されてないんですけど、とか訊くなよ
0586デフォルトの名無しさんNGNG
>581
素直に、グローバルな値はアンマネージドクラスで定義した方が早くない?
0587デフォルトの名無しさんNGNG
>> 576
VC++2005 のプロジェクトのプロパティにある、C++ のコマンドラインオプションに、
/clr を追加すれば、警告が出てくるが、/clr:oldSyntax を上書きしてくれる。
それがいやなら、「use managed 〜」のチェックをはずす。
0588デフォルトの名無しさんNGNG
>587
Thx. チェック外して自前でコマンドラインに追加するっす
しかし、>>553 以外の C++/CLI のちゃんとした構文ドキュメントってどっかにないかねぇ
0589588NGNG
ttp://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1557.pdf
これは何の資料なんだろう。QuakeIIのソースを利用した調査かな
0590デフォルトの名無しさんNGNG
>>588
「Use Managed 〜」のチェックをはずすと、
コマンドラインで取り込んでいるモノがすべて消えるので注意。
メモして自前で記述する。
0591デフォルトの名無しさんNGNG
>590
りょうかいです

プロパティもとはちょっと変わるんだねぇ

ref class R {
private:
  int size_;

public:
  property int Size {
    int get() { return size_; }
    void set(int val) { size_ = val; }
  }
};
0592デフォルトの名無しさんNGNG
>589
これは ISO C++ のワーキング・グループがまとめた C++/CLI の説明らすぃ
今回の Whidbey でどこまで実装されてるかチェックしてみます
0593デフォルトの名無しさんNGNG
C++ compiler M4 feature list
ttp://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=whidbey&sLCID=US&sgroupURL=microsoft.private.whidbey.cplusplus.language&sMessageID=%[email protected]%253E
0594デフォルトの名無しさんNGNG
>593
おおう、おおむねこのリスト通りであることを確認しますた

・ファイナライザ(M4.2) 未実装

・プロパティ
機能を確認

・インデックス・プロパティ(M4.2) 未実装

・ref クラス内でのSTLコンテナの記述
マネージド型と非マネージド型の混在するmapが作れなかった
stdcli はたぶんかなり先

・delete
ref 型に対する機能を確認

・for each(M4.2) 未実装

・marshal_as 未実装

・native 型からの継承 未実装

・static な operator (M4.1) 機能を確認

generic と template はまだ見てないです
0595デフォルトの名無しさんNGNG
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_; }
};
0596デフォルトの名無しさんNGNG
マネージクラスのポインタが作成できない。
0597デフォルトの名無しさんNGNG

ref class C { /* .. */ };

C ^ h = gcnew C;     // OK
(*h).do_something();    // OK
C * p;            // Compile Error
sizeof( *h );        // Compile Error

orz
0598デフォルトの名無しさんNGNG
独自にネイティブスレッド生成するアンマネージドなC++の
コードをラップするマネージドなクラスを生成して、
マネージドコードなUIプログラムとリンクさせたアプリケーションを
作った場合、アンマネージドなスレッドの動作にGCコレクションを
割り込ませないようにすることは可能でしょうか?
例えばアンマネージドなスレッドを優先的に動かしたい場合
などです。
0599デフォルトの名無しさんNGNG
>598
具体的には何とも言えんが、用はネイティブなスレッドが起動している間はGCが
動いてその親であるマネージド型を回収してほしくないってこと?

__pin しる

__pin はアンマネージドが動いている間、対象となるオブジェクトをGCしないことを
保証してくれる
0600デフォルトの名無しさんNGNG
>596-597
これって、こういうもんだろってスルーしてたけど、マネージド型って C++/CLI では
ハンドル型として規定されて、クラス・インスタンスとは同等ではないから >>597 の
振る舞いで問題はないと思う

アンマネージドなクラスがマネージド型を保持するときだけ、* でのポイントを認められて
いるけど、ネイティブとマネージド型の混在は M4 を通しての課題らしいから、まだ動いて
いないかと
0601598NGNG
>>599
__pinはメモリを移動しないって意味ですよね?
そうではなく、私が考えているシチュエーションは
1)優先度が高いアンマネージドなスレッドがアクティブな時に
 GCが走り出さない保証があるか?
2)通常優先度のマネージドなコード実行中にGCが走り出した場合、
 そこに優先度が高いアンマネージドなスレッドが割り込むことが
 可能か?
ということです。helpみてるとGC中は(同一プロセス内の?)
全スレッドが中断されるみたいな記述があったようなきがした
のですが、これってアンマネージドなスレッドも含まれのでしょうか?
優先度の高い所だけプロセス分けるって手もあるんでしょうけど…。
0602デフォルトの名無しさんNGNG
>>600
でもなぁ、>>589 のPDF みると、将来的には出来そうなんだよなぁ。
これが出来れば、T がマネージドなクラスかそうでないかをコンパイル時に
判定することも出来そうなので、なるべく早い段階で使えるようにしてほしい。
0603デフォルトの名無しさんNGNG
>601
実行モデルの問題ですね
NativeスレッドとGCのどちらが優先度が高いのか、正直こんなとこで訊いてないで
やってみればいいんでない、とか思わなくもないですが、ざっと調べた限り、CLRと
Nativeの混合状態での実行モデルのようなものは見あたりませんですた

つーことで、試してみました
native スレッドは通常のプライオリティで、ひたすらミリセカンドまで表示し続け
GC側はマネージド型を10000個作って、GC::Collect をかけます

とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ
セカンドですが、GC::Collectのタイミングでだいたい+30ミリセカンドぐらいです

もちろん誤差も含んでますし、タイミングもあると思いますが、まぁ、COMでapart
にしたほうがよろしいかと思います
0604デフォルトの名無しさんNGNG
>602
M4終了がいつかってことだよね。WGのタイムテーブルだと、C++/CLIの最終勧告が
2005年末ぐらいだから、構文とベース機能(nativeとmanagedの併存の実現)は今年
いっぱいぐらいじゃないのかなぁ

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

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

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

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

いい感じに沈んでたのに
0612しぃNGNG
>607 です
自己解決しました。デバッグモードを「自動」ではなく「マネージのみ」にすると早くなりました。デバッグも出来るみたいです。お騒がせしました。
0613デフォルトの名無しさんNGNG
>>612
お礼すんのにあげんなァァァ
0614デフォルトの名無しさんNGNG
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"です
0615デフォルトの名無しさんNGNG
>614
上げないで欲しいんだが・・・

文字列の変換はユーティリティを利用する

#include<vcclr.h>

と宣言して、

wchar_t __pin *pRawString = PtrToStringChars(textBox1->Text);

これで、ワイド文字列になる。あとは、ワイド文字列に対応した wcstol を使って欲しい

よく考えると、この文字列処理ってこのスレに書いたことがなかったなぁ
0616デフォルトの名無しさんNGNG
>615
あーっと、スマソ
こっちだ wcstol −> _wtoi
0617デフォルトの名無しさんNGNG
>>615-616
遅レス&age申し訳ないです
今確かめました。修行してきます・・・

MSDN C++マネージ拡張の仕様
7.8 文字への直接アクセス
これ自分には勉強になりました
0618デフォルトの名無しさんNGNG
MSDN に VS2005 TP May 2004 来た。
C++ CLI はどこまで進んでいるんだろう…
0619デフォルトの名無しさんNGNG
>618
こんな感じらしい
ttp://blogs.msdn.com/slippman/

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

ハンドルは間違いです...
0622デフォルトの名無しさんNGNG
>620

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

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

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

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

すぐに仕事に使うんじゃなければ >589 でも読んで(*´Д`)ハァハァするがよしかと
0625デフォルトの名無しさんNGNG
>623

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

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

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

...2005年まで待つのか...いやほんとに2005年に出るのか?
0628620,627NGNG
ごめんなさいまたあげちゃいました...
0629デフォルトの名無しさんNGNG
Whidbey May 2004
基本的には M4.1 ベースでバグフィックスを進めたみたい
今回の Whidbey からはプロパティ上で /clr /clr:pure /clr:safe /clr:oldSyntax が設定できる
ようになってた

後は、.Net FW は 2.0 ベースになってた
0630デフォルトの名無しさんNGNG
んで、次のような構文を実行しますた

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 も順調そうです
0631デフォルトの名無しさんNGNG
SessionEnding を拾えないでいる・・・・C#で書くとうまくいくのだが・・・?
どっかにサンプルころがってないかな?VC++.netのコード。
0632デフォルトの名無しさんNGNG
>631
CodeProject の C++ WebSrevice あたりで、あるんでない?
この間、WebServices を作ってて、Application や Session にアクセスできることを
今更ながら知って感動していた

いや、漏れが物知らずだったんだけどさ(´・ω・`)ショボーン
0633デフォルトの名無しさんNGNG
結局SessionEnding使わずにWndProcでやり過ごしたわ。あーすっきり
0634デフォルトの名無しさんNGNG
深く沈んでる(w
ベータが出るまで話題がないなぁ

と、保守
0635デフォルトの名無しさんNGNG
VC++2005 Express Beta 入れてみた
相変わらず、ファイナライザはない

相変わらず M4.1 らしい
0636デフォルトの名無しさんNGNG
ぬぅ。

 boost::is_base_and_derived< System::Object, T >

とかかけるようになるのはいったいいつになるのだ。
0637デフォルトの名無しさんNGNG
MC++以外の.NETのプロジェクトに
C++,ATL,MC++で書いたライブラリをDLL化
しないで使うことって可能ですか?

あとからexeとdllを一つにできるのでもいいです。
0638デフォルトの名無しさんNGNG
>637
無理
0639デフォルトの名無しさんNGNG
なあ、managed C++やろうと思っても良い書籍が見つからないんだがオススメある?
やっぱMSDNライブラリしかない?
0640デフォルトの名無しさんNGNG
>639
漏れはこれで勉強した。いい本かどうかは微妙

ttp://www.amazon.co.jp/exec/obidos/ASIN/1893115283/qid=1090330561/sr=1-4/ref=sr_1_10_4/249-9037969-2157104
0641デフォルトの名無しさんNGNG
あげ
0642デフォルトの名無しさんNGNG
>>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を使いたい場合に読むって感じの内容。
なので、易しい解説などいらんから、がつーんと要点と詳細が欲しいという人向け。
0643デフォルトの名無しさんNGNG
C# の params キーワードに対応するmanaged C++ での方法は、何を使えばよいのでしょうか?
0644デフォルトの名無しさんNGNG
>643

対応型 __gc[] じゃ駄目?

params char[] だったら wchar_t __gc []
0645643NGNG
いえ、可変長メソッド引数なので、単なる __gc ではだめです。
何かしらの Attribute だと思うのですが、見つけられていません……。
0646デフォルトの名無しさんNGNG
えっと、 __gc[] で駄目だったの? __gc[] って array のガベージ型だと思うんだけど

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

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

ってなってるんだけど

0647643NGNG
解決しました。
ParamArrayAttribute でした。
MSDNの言語フィルタをVBにしたら気づきました。

>>646
その __gc は、単に managed 配列を表すだけの、省略可能な修飾子ですよ。
0648デフォルトの名無しさんNGNG
[ParamArrayAttribute]
void Func(String *forms, Object * args[])

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

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

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

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

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

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

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

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

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

という点でしょうか

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

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

って書けばいいかと

== もちゃんと動いている気がするけど、念のために
0656デフォルトの名無しさんNGNG
C++/CLIって
ぶっちゃけイケてる?
0657デフォルトの名無しさんNGNG
>>656
逝けてる
0658デフォルトの名無しさんNGNG
>>656
既存のライブラリを使いやすいという意味ではかなりいけてる。

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

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

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

まぁ、まだ、ベータだし、ってとこいっぱいあるけど
0660デフォルトの名無しさんNGNG
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 を渡したい );

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

0661デフォルトの名無しさんNGNG
http://www.msdn.net/library/default.asp?url=/library/en-us/dnvs05/html/TransGuide.asp
こんなのもあったのな
0662デフォルトの名無しさんNGNG
アスペクト指向的に、今までのC++ソースコードは何も書き換えずに
別ファイルからこのクラスは__gcにする、とかいう指定が出来るようになればいいな。
0663デフォルトの名無しさんNGNG
>662
なんか、できそうな気がする

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

>665
え? 自作すればいいだろ、これぐらい
ファイルの対応表から、マネージド・ラッパのクラス吐いて、インターフェイスの実装再配置を
使って、アンマネージドなクラスにマッピングすればいいんだと思うが
もしかして、それよりもずっと高度な話を言ってる?
0668デフォルトの名無しさんNGNG
MC++とC++/CLIの違いは記述の違いだけ?
やれることに違いは無いのかな?
0669デフォルトの名無しさんNGNG
違いはいっぱいあるんだが、目に見えるところでは記述の違いだけだな
言語って、そういうものだろ?
0670デフォルトの名無しさんNGNG
>>669
まあそうですけどね。ただ、VJ++とCOMのシームレスな連携と
C++とCOMのあのメンドクささを、ただの記述の違いというには
個人的には違和感を感じます。あれぐらいの違いがあるのかなと。
0671デフォルトの名無しさんNGNG
>670
C++/CLI の最大の焦点は、マネージドとアンマネージドの2層化
MC++ ではCILヒープとヒップの層の分離ができていないために、総てが一緒くたに
new していた。だから、逆に何を削除するか、何をガベージに任せればいいのか
わからなくなっていた

MC++ はその試行錯誤の段階の言語といえる。管理を明確にし、型を分離し、配置位置を
ちゃんと意識しながらコーディングできるようにしたのが C++/CLI
そして、同時に標準 C++ の純粋性を保持しようとしている。また、継承関係でもマネージド
・非マネージド間での相互参照を許可する(予定。笑)設計になってる

これらを考えると、内部的にはかなり違っている。追加された表記は特にオブジェクトの
配置位置を明確にすることと、さりげに、C++ の抽象化への不満を解消するための
キーワードが多い

こんな感じで良い? まぁ、口で説明受けるより組んでみた方が良い
漏れの意見はちょっとヽ(´ー`)ノマンセー意見が過ぎると思う

ECMA 標準化 C++/CLI ドラフト
http://msdn.microsoft.com/visualc/homepageheadlines/ecma/default.aspx
0672デフォルトの名無しさんNGNG
VS2003、.net Framework 1.1を使っています。
自作のアイコンを作成してFormに適用しました。タスクバーにもアイコンが表示されています。

ところがXPにはタスクバーにアイコンが増えるとアイコンをまとめる機能があり、
これが働くとデフォルトのアイコンに戻ってしまいます。
たぶんフォームではなくアプリのアイコンを表示しているのだと思います。
アプリケーションに自作のアイコンを適用するにはどうすればよいのでしょうか?

C#ではプロジェクトのプロパティにビルドという項目があってそこで指定できます。
しかしMC++にはこれがありません。app.icoを自作のアイコンで上書きしたところ、
app.rcの中も自作のアイコンに置き換わりましたが、上記の不具合はなおりませんでした。
0673672NGNG
解決しました。
app.icoを上書きすればよかったのですね…。
debugビルドでは反映されないので混乱してしまいました。
0674デフォルトの名無しさんNGNG
C#での BindingContext[dataSet1,"TableName"].Position++;
が
BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1
に化けるのか。

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

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

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

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

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

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

漏れ、boostをそれで使ってるよ
0681デフォルトの名無しさんNGNG
このスレも C++/CLI やろうぜ!! で立て直したら?
0682デフォルトの名無しさんNGNG
まだ、M4程度のベータだし、managed C++とスレ分けるまでもないから、このままで
いいと思われ
このペースじゃ2005 Mid のWhidbeyリリースまでに1000逝かんでしょ
0683デフォルトの名無しさんNGNG
0684デフォルトの名無しさんNGNG
C++/CLI のベータだが、気のせいか
Dictionary<String ^, data ^> ^dic = gcnew Dictionary<String ^, data ^>;
で作ったデータで、

String ^keyword = ...
dic->ContainsKey(keyword)
としたとき、データとして含まれているはずなのに引っかからないことがある
(´-`).。oO(なんでだろう?)
0685デフォルトの名無しさんNGNG
interface class を継承したクラスまでインターフェイスになっちまうし。
0686ageNGNG
>>679
Microsoft Visual C++ .Net 2003: Kick Start
http://www.amazon.co.jp/exec/obidos/ASIN/0672326000
を読むと何か参考になるかも。
0687wonapiNGNG
WonAPI MRIMG32は、Microsoft MSIMG32.DLL と高い互換性を実現しました。

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

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

WonAPI MRIMG32 トップページ
http://f59.aaa.livedoor.jp/~wonapi/mrimg32/index.html
0688デフォルトの名無しさんNGNG
この程度自前で実装できる上に、このスレと何の関係もない。
0689デフォルトの名無しさんNGNG
__gcを付けたクラスから__gcの無いクラスにコールバック先(デリゲートを使う?)を渡して
__gcの無いクラスからコールバックをするにはどうしたらいいのでしょうか?
0690デフォルトの名無しさんNGNG
・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;
}
0691デフォルトの名無しさんNGNG
>>690
レスありがとーー!
試してみます。報告は後ほど
0692デフォルトの名無しさんNGNG
>>690
ありがとうございました。
解決しそうです。

ちなみに何かいいMC++の書籍ありますか?
0693デフォルトの名無しさんNGNG
つーか
こんなの使ってる奴いるのか?
正気か?
0694デフォルトの名無しさんNGNG
>>693
使わざるえない時もあるってもんさヽ( `Д´)ノ
0695デフォルトの名無しさんNGNG
>>692
俺はMSDNだけで済ませてる。
あとは過去ログ参照

>>693
俺だってC#とか使いてぇよ…orz
まぁ、デフォのC++よりは幾分マシ
0696デフォルトの名無しさんNGNG
   AAA* aaa[];
public:
   __property ????? get_AddressList() { return aaa; }
   __property void set_AddressList(????? value) { aaa = value; }

AAAクラスを配列で持ちたいので
こんな感じでプロパティを宣言したいのですが
うまくいきません。?????の所をどうしたらいいのでしょうか?
0697696NGNG
自己解決(´Д`;)しました


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

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

0698デフォルトの名無しさんNGNG
>>696
AAA* __gc[] だったかな。
0699デフォルトの名無しさんNGNG
>>697
戻り値をAAA*[]にして小一時間程悩むのは誰もが通る道だろうな。
0700デフォルトの名無しさんNGNG
C++/CLIが出るまでの我慢
0701デフォルトの名無しさんNGNG
__だらけで汚い言語ですね
0702デフォルトの名無しさんNGNG
過渡期のものだから。
0703デフォルトの名無しさんNGNG
ANSIで規格化されない限り、ずっとそのまま。
0704デフォルトの名無しさんNGNG
解析処理みたいなのをmc++でストックしとけば、ドトニート時代にも対応出来ますよね?
0705デフォルトの名無しさんNGNG
必要になるまでやらんでいいと思うが
070669式フリーPG ◆hND3Lufios 05/02/14 21:35:52
C++/CLRが出るまでC#に退避することにしますた。
0707デフォルトの名無しさん05/02/21 20:07:59
int をHex表示したいんですがどうやるんですか?
0708デフォルトの名無しさん05/02/23 21:06:22
>>707
何に表示したいんだ?
まあ、とりあえず、標準出力なら
Console.Write("{0:x}", num);
string.Format ってのもあり。
0709デフォルトの名無しさん05/02/23 21:12:51
・・・sprintf でも使ったら?

C++/CLI だと
(3).ToString("X"); とか
0710デフォルトの名無しさん05/02/25 16:00:38
stringstream にマニュピレータ設定するのが C++ スタイルだろ。
071170705/02/25 20:45:33
ありがとう。返事送れてごめん。
0712デフォルトの名無しさん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
0713デフォルトの名無しさん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/
0714デフォルトの名無しさん05/03/20 18:07:41
>712
日本語資料ならなんかGDNJで晒されてたぞ
0715デフォルトの名無しさん05/03/20 19:35:34
>>714 これ?
C++/CLI 言語仕様
http://www.stdblue.net/cgi-bin/vene/wiki/wiki.cgi
0716デフォルトの名無しさん05/03/20 19:51:08
Java VMで十分
0717デフォルトの名無しさん05/03/20 23:41:36
意味不明
0718デフォルトの名無しさん2005/03/21(月) 11:43:09
>717
CLR の事と間違えてんじゃねぇの?
まぁ、CodeDOMあるから、C++の実行時解釈もできるけど
0719デフォルトの名無しさん2005/03/25(金) 22:46:04
Cマガジンの特集記事がうんこなのか俺の頭がうんこなのかわかんないけど
C++/CLIの追加機能の意味(というか用途)がわからんものが多いッス
genericsとtemplateの使い分けはどうするんだとか
interfaceは純粋仮想関数で事足りるんじゃねぇの?とか
0720デフォルトの名無しさん2005/03/26(土) 02:42:13
俺も今回の Cマガ読んで、 C++/CLI を知ったんですが、機能追加しすぎで混乱しますね。
C++/CLI というから、C++に最低限の機能を追加したのかと思いきや、もう全然違う言語に感じます。

個人的には、ガベージコレクタだけで十分なんだが。(しかも、もっとシンプルな形で)
0721デフォルトの名無しさん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
0722デフォルトの名無しさん2005/03/27(日) 23:46:32
つまり.NETFrameWorkの枠組み(他の言語から呼び出せるとか)
への対応が強化された

って理解でいいのかな
0723デフォルトの名無しさん2005/03/28(月) 00:34:09
ん。C++ユーザーにとって、C#が不要になるくらい親和性が高くなったというとこ
0724デフォルトの名無しさん2005/03/28(月) 21:31:57
C#見捨てないで・・・
0725デフォルトの名無しさん2005/03/29(火) 16:59:42
C#、君はいい言語だったが、君のお父上が悪いのだよ
0726デフォルトの名無しさん2005/03/29(火) 18:28:01
まあ、1からの .NET アプリ開発だとやっぱりC#の方が綺麗だろ。
0727デフォルトの名無しさん2005/03/30(水) 02:25:04
>>726
私はC++のポリシーの無さが限りなく心地よいのだが、それでも
確かに.netを用いた開発においてはC#の方がC++/CLIよりも開発
効率の点で勝っていることを認めざるを得ない。
0728デフォルトの名無しさん2005/03/31(木) 06:16:09
Dから(CまたはC++)は利用できますか?
出来るとしたらそのときはmanagedC++使うんですか?
0729デフォルトの名無しさん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/
0730デフォルトの名無しさん2005/04/09(土) 22:31:08
Beta2 まだかねぇ。結局、for each は採用されるのだろうか
正式な仕様が公表されていないから、実際にどうなっているのかWhidbeyで動かして
見ないとわからんと言うのは問題だな
0731デフォルトの名無しさん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
最初のバージョンとはかなり違って、公表されてる仕様に近くなってるから、
覚悟してアップデートするように。
0732デフォルトの名無しさん2005/04/10(日) 12:04:05
これ、以前入れたら cl が実行時にセグ落ちするようになっちゃって、もとのBetaを
入れ直した憶えがある
構文が公開仕様に近いなら、試してみたいが・・・うーん

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

ところで、正式な仕様はまだ公開されないのかねぇ
0736デフォルトの名無しさん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
0737デフォルトの名無しさん2005/04/19(火) 21:32:49
ん。ファイナライザの動作を確認

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

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

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

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

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

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

using namespace stdcli::languageと書いたのですがダメでした
何を参照すればいいのでしょうか?
0745デフォルトの名無しさん2005/04/21(木) 17:39:01
えーっと、ごめん。Beta2だよね?
Beta2 では pin_ptr や safe_cast, array<> は stdcli::language 宣言しなくても使えるように
なったよ。だから、逆に宣言してはいけない(はず)
0746デフォルトの名無しさん2005/04/21(木) 17:48:23
>>745
Beta2とかよくわからないです(´Д`;)
でも
array<wchar_t>^ arr = stringVal->ToArray();
を書いたら

error C2059: 構文エラー : '^'
error C2065: 'array' : 定義されていない識別子です。

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

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

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

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

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

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

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

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

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

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

確かにその意見には同意するし、C++/CLIへの評価も判る
だが、なぜだろう。疫病神に取り憑かれたような気がするのは(w
0770デフォルトの名無しさん2005/05/10(火) 16:49:06
VC++っていう名前がC++/CLIになるのけ?
0771デフォルトの名無しさん2005/05/12(木) 16:09:53
Jan, 2005 ものを発見
ttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++-CLI%20Standard.pdf
0772デフォルトの名無しさん2005/05/24(火) 09:30:33
VS2005は
C++のexportには対応してくれてるのかな?
0773デフォルトの名無しさん2005/06/03(金) 17:34:04
VS2005のスレから来ました。以下、知ってたら教えてください。

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

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

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

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

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



0780デフォルトの名無しさん2005/06/03(金) 19:30:52
_ATL_MIN_CRT

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcconusing_atl_min_crtinyouratlproject.asp
http://hp.vector.co.jp/authors/VA022575/c/atlmincrt.html
http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl08-03/
http://www.hi-ho.ne.jp/babaq/comprog2.html
0781デフォルトの名無しさん2005/06/03(金) 23:12:49
>780
いや、明示的に printf なんて使ってるからそれじゃ駄目だろう

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

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

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

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

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

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

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

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

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

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

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

こういうことはできない、またはすべきでなかったりするのでしょうか?
0824デフォルトの名無しさん2005/06/30(木) 00:03:34
pin_ptr<LPARAM> current = this;
EnumWindows(&func, current);
で駄目なん?
0825デフォルトの名無しさん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 メンバを使うとかしか思いつかないのですけど、、、
0826デフォルトの名無しさん2005/06/30(木) 01:31:52
えっと、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tlbimp hoge.exe /out:hogeexe.dll とかしてinteropアッセンブリを手動で作ってみては?
0876デフォルトの名無しさん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を書き換えて再アセンブルする
という方法を思いついたのですが、ちょっと怖いな。。
0877デフォルトの名無しさん2005/12/05(月) 00:02:57
どうやら>>876の方法でできたようです!
何度もご返事くださった方、ありがとうございました。

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

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

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

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




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

これちゃんとコンパイルできたよ?
リンク時にトラぶってるのかな
0883デフォルトの名無しさん2005/12/14(水) 23:28:22
ん? マネージ拡張でデストラクタ?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconusingcdestructorsyntax.asp
08848782005/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 をはずせないし。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

namespace AAA{
namespace BBB{

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

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

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

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

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

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

パスの区切りなら「大抵」スラッシュでもいけるからそっちへ逃げる方向で勘弁して。
レス数が950を超えています。1000を超えると書き込みができなくなります。