C++/CLI part3 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/03/25 21:13:54
おそらく、.NET開発でデファクトスタンダードに最も近い
であろうC++/CLIについて語ろうぜ!

このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。
.NETのクラスライブラリの使い方といった質問は姉妹スレ「くだすれC++/CLI(初心者用)」に
お願いします。

前スレッドはこちら
(p)スレリンク(tech板)
(p)スレリンク(tech板)l50

姉妹スレ
くだすれC++/CLI(初心者用)
(p)スレリンク(tech板)l50
managed C++ やろうぜ!! 002
(p)スレリンク(tech板)l50

2:デフォルトの名無しさん
08/03/25 22:32:54
おつ

3:デフォルトの名無しさん
08/03/26 00:54:20
いらんたせろ

4:デフォルトの名無しさん
08/03/26 15:15:12
dataGridView等で、選択されてる行を消すって処理を
エレガントに描くにはどうすればいいですか?

今のところ
for( int i = 0 ; i < this->dataGridView->Rows->Count ; ++i )
{
     System::Windows::Forms::DataGridViewRow^ row = this->dataGridView->Rows[i];
     if( row->Selected )
     {
        dataGridView->Rows->Remove( row );
         i=0;
     }
}
です

5:デフォルトの名無しさん
08/03/26 15:40:32
それって最終的に全部消さないか?

6:デフォルトの名無しさん
08/03/26 16:06:45
>>5
selectedの時しか消さない(i=0)から問題なし
selectedしてない場合、ループの最後まで行くお

7:デフォルトの名無しさん
08/03/26 16:12:40
自動選択は?

8:デフォルトの名無しさん
08/03/26 16:17:19
自動選択って何?
上のコードでとりあえず動いてるから問題ないというか
質問を質問で返さないで

9:デフォルトの名無しさん
08/03/26 16:28:02
あああ、デフォルトでそんな機能あるやんね

10:デフォルトの名無しさん
08/03/26 20:12:53
List<Scene^> scenes;
// いろいろ
for each(Scene s in scenes)
{
 delete s;
}

何か問題はありますか?

11:デフォルトの名無しさん
08/03/26 20:24:45
いろいろの最中に例外が投げられたらオワタ\(^o^)/になる。
といってもGCとファイナライザで救済されるから
ネイティブC++のときほど気にかける必要はないかもしれない。

12:デフォルトの名無しさん
08/03/28 15:20:34
System::Collections::Generics〜のコンテナ郡に
auto_handleは入れられますか?

13:デフォルトの名無しさん
08/03/28 15:22:51
はい

14:デフォルトの名無しさん
08/03/28 15:48:18
入れたところで、自分でauto_handleのデストラクタを呼ばない限り、
auto_handleの中身のインスタンスのデストラクタは呼ばれないぞ。
中身のデストラクタはauto_handleのデストラクタ (Dispose)から呼ばれるのだが、
BCLのコレクションは要素のDispose(デストラクタ)を呼ばないため。

15:デフォルトの名無しさん
08/03/28 15:54:16
意味ね〜

16:デフォルトの名無しさん
08/03/28 15:57:17
おとなしくGCに従うのだ ははは

17:デフォルトの名無しさん
08/03/28 16:07:33
STL/CLRのコンテナでも無理なの?

18:デフォルトの名無しさん
08/03/28 16:14:24
無理。

19:デフォルトの名無しさん
08/03/28 16:20:33
無理ですかorz

20:デフォルトの名無しさん
08/03/28 20:55:35
ref class Banana;
List<Banana^> bananas;

for each (Banana^ b in bananas)
{
 delete b;
}


21:デフォルトの名無しさん
08/03/28 21:01:32
Disposableなコンテナつくればいいじゃない

22:デフォルトの名無しさん
08/03/28 21:15:31
value型でauto_handleみたいの作ろうとしたらデストラクタが定義できなかった。

23:デフォルトの名無しさん
08/03/28 21:17:13
STLのコンテナだってstd::auto_ptr入れられないしね。

24:デフォルトの名無しさん
08/03/28 21:18:27
>>23
それとこれとは関係ないだろ。

25:デフォルトの名無しさん
08/03/28 23:44:30
でもさーGCはモノが使われなくなったら消えるんだから。
Vector<boost::shared_ptr<Hoge>>
と一緒じゃね?

26:デフォルトの名無しさん
08/03/29 02:16:39
25はわかるけど、それと23とのつながりがわからない。

27:デフォルトの名無しさん
08/03/29 08:41:05
>>25
タイミング

28:デフォルトの名無しさん
08/03/29 10:58:40
COMにすればよくね?

29:デフォルトの名無しさん
08/03/29 13:24:49
COMにもリリースのタイミングがあってだな

30:デフォルトの名無しさん
08/04/01 21:59:31
過疎

31:デフォルトの名無しさん
08/04/02 21:46:36
  踏んだら孕んだ!
  孕んだ振る降る般若だ!
  童貞擦る無駄、フン出る春巻きはむ無理!
  チン毛ちぎり、看板塗る飛騨!
  安眠煮る焼酎!
  安打!?半田ゴテ適時打!!
  原チャリ盗んだ!
  よくちょん切れるハサミだ!
        ∧__∧   ________ 
      <丶`Д´>/ ̄/ ̄/ 
      ( 二二二つ / と)

32:デフォルトの名無しさん
08/04/08 06:12:29
const参照で受け取ったref classのプロパティって触れないの?

ref struct Foo
{
property int Bar;
static void Hoge(const Foo% foo)
{
foo.Bar;
}
}

error C2662: 'Foo::Bar::get' : 'const Foo' から 'Foo %' へ 'this' ポインタを変換できません。

const外すとコンパイル通ります。
getterちゃんと書いて、 int get() const とかやろうとすると
const 付けんなって怒られるし…

33:デフォルトの名無しさん
08/04/08 10:30:03
追跡参照の中身が固定されたらGCが起きたとき、追跡できないだろ

34:デフォルトの名無しさん
08/04/08 14:59:36
単にCLIにconstの概念がないから、
マネージ型にconst使おうと考えるなということ。

35:32
08/04/08 18:12:22
>>33
え?それは Foo * const foo とした場合の話じゃないの?
「中身」っていう言葉が何を指してるのかよくわからないけど…。

C++だったら、そもそも参照自体がポイント先の変更を許さない概念なわけだけど、
CLIで%なんてもの導入したからには、そのへんは宜しくやってるんじゃないの?
const参照はあくまでポイント先のメンバの不変性を宣言するものだと思うんだけど

>>34
CLIでは「このメソッドは引数のメンバフィールドを変更しません」って
明言する事はできないの?
C++常習者としては、それってすげー不安なんですけど…

36:デフォルトの名無しさん
08/04/08 22:10:35
>>33
とんでもないかんちがいをしている椰子w

37:デフォルトの名無しさん
08/04/09 16:56:50
VC++2008のexpressでmsclr/marshal.h が見あたらないんですが、
もしかしてこれStandard以上にしか付いてないんですか?

38:デフォルトの名無しさん
08/04/09 22:00:49
error C4959: アンマネージ struct 'Microsoft::DirectX::PrivateImplementationDetails::_D3DPRESENT_PARAMETERS_' は、そのメンバへのアクセスによって検証不可能なコードを生成するため、/clr:safe で定義できません
とエラーが出ます。

39:デフォルトの名無しさん
08/04/09 22:13:02
>>35
というか.NETの参照渡しは呼び出し側に変更してほしい時にしか使わないお約束

40:デフォルトの名無しさん
08/04/09 22:27:20
^だけだと nullptr渡されない?

41:デフォルトの名無しさん
08/04/09 22:29:39
そうだよ。それで困るメソッドはArgumentNullExceptionを投げてくる。

42:デフォルトの名無しさん
08/04/09 23:30:38
モノ渡したら4バイト超えてたら遅くなるんじゃないの?

43:デフォルトの名無しさん
08/04/10 00:05:45
いや、^のハンドル型の実態はGC追跡付ポインタ。
引数や戻り値でも4/8バイトのアドレス値が受け渡されるだけ(少なくともCLRでは)。

.NET Frameworkのライブラリのクラスに、
コピーコンストラクタや代入演算子が定義されていないのは、
そういうわけで不要だから。

44:デフォルトの名無しさん
08/04/10 00:06:05
実際、XNAの算術ライブラリなんてガイドラインと逆走してるよ。

45:デフォルトの名無しさん
08/04/14 22:39:17
(一般ゲーム) [050325] [工画堂スタジオ] 蒼い空のネオスフィア -Neosphere of The Deep-blue Sky- (bin+cue).rar


46:デフォルトの名無しさん
08/04/15 23:23:14
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

47:デフォルトの名無しさん
08/04/15 23:25:01
VisualAge のことですね。わかります

48:デフォルトの名無しさん
08/04/20 15:16:43
VisualAge

49:デフォルトの名無しさん
08/05/15 12:45:00
過疎るな

50:デフォルトの名無しさん
08/05/15 15:20:37
C++/CLIの達人になる意味って、ある?

51:デフォルトの名無しさん
08/05/15 15:54:40
「C++/CLIの達人」⊂「C++の達人」
だから考えるまでもなく意味はあるだろ

52:デフォルトの名無しさん
08/05/15 16:22:00
C++の達人とはまたベクトルが違うような

53:デフォルトの名無しさん
08/05/15 17:39:28
/ってorの意味じゃないの?
包含関係逆だろ!?

54:デフォルトの名無しさん
08/05/15 18:28:36
withの意味だよ。

55:デフォルトの名無しさん
08/05/16 23:33:06
「C++/CLIの達人」=「C++の達人」 ∩「CLIの達人」
「C++/CLIの達人」⊂「C++の達人」
「C++/CLIの達人」⊂「CLIの達人」

56:デフォルトの名無しさん
08/05/17 03:40:44
下二つ反対だろ(w

57:デフォルトの名無しさん
08/05/17 03:43:38
上も反対

58:デフォルトの名無しさん
08/05/17 08:55:34
           おっぱい!
       おっぱい! おっぱい!
    おっぱい おっぱい! おっぱい!
  おっぱい! ∩   ∩ ノ)   おっぱい!
 おっぱい!  川 ∩ 川彡'三つ  おっぱい!
おっぱい! ⊂ミ∩、⊂ミ∩彡⊃    おっぱい!
おっぱい!⊂三ミ( ゚∀゚)彡三彡三⊃ おっぱい!
おっぱい! ⊂彡川⊂彡川ミ⊃    おっぱい!
おっぱい!⊂彡川∪⊃ U川彡⊃   おっぱい!
 おっぱい! (ノ ∪  川 ∪ミ)  おっぱい!
  おっぱい!      ∪     おっぱい!
    おっぱい! おっぱい! おっぱい!
        おっぱい! おっぱい!
            おっぱい!

59:デフォルトの名無しさん
08/05/17 20:32:41
C++/CLIの達人ってのが
C++ or CLIの達人だったら、
標準C++だけ知ってる達人とか、CLIのことだけ知ってる達人も
C++/CLIの達人になるけどいいの?

60:デフォルトの名無しさん
08/05/17 20:47:46
/clr:safe の達人というのがいるとすれば、C++が使えるかどうか怪しいよな。

61:デフォルトの名無しさん
08/05/17 23:23:05
それじゃ、C#使え、だよな

62:デフォルトの名無しさん
08/05/18 15:14:16
C++/CLIのメリットってなんだろな。
safeで使いたいならC#だし、でなければC++でいいだろうし。
C++とmanagedのオブジェクトを両方使うのもあまり使い勝手が良くないし。


63:デフォルトの名無しさん
08/05/18 16:00:41
C++でしか使えない(使いにくい)ライブラリをラップするぐらいしか

64:デフォルトの名無しさん
08/05/18 17:23:00
だから>>55が正しいと思わんか?

65:デフォルトの名無しさん
08/05/19 10:55:20
C#でusingの嵐に嫌気がさした人にはC++/CLIは悪くない。


66:デフォルトの名無しさん
08/05/19 12:20:12
だらだらと長い名前空間を書かされるとしてもか?

67:デフォルトの名無しさん
08/05/19 12:35:56
using namespace書いとけばってのはC#だって一緒だが…。
ひょっとして、名前空間のインポートするときのusingディレクティブの話と、オブジェクトーのスコープを
定義する場合のusingステートメントの話をごっちゃにしてないか?


68:デフォルトの名無しさん
08/05/20 12:58:28
C++で作ったやつが
簡単?に.Netな画面のアプリで動かせるんだよ


69:デフォルトの名無しさん
08/05/20 16:30:17
printf()とか関数の呼び出しを書いたとき、
それがネイティブなのか違うのか、
コンパイラは、どうやって判断してコードを吐いてるのだ?

70:デフォルトの名無しさん
08/05/20 16:50:22
C++ではプロトタイプのない関数は呼べない。

71:デフォルトの名無しさん
08/05/20 19:03:52
>>69
リンク時に解決する。
実際にILからネイティブの呼び出す部分はJITで生成される。

72:デフォルトの名無しさん
08/05/20 19:26:59
この言語最高!

73:デフォルトの名無しさん
08/05/20 20:11:17
普通のクラスや関数とrefクラスが混ざったDLLを作るとわけわかめ全開になるよね。

74:デフォルトの名無しさん
08/05/20 20:34:58
確かに冗談みたいな汚さw

75:デフォルトの名無しさん
08/05/21 12:22:19
>>68
簡単だったらな。


76:デフォルトの名無しさん
08/05/21 18:01:48
簡単じゃないの?

77:デフォルトの名無しさん
08/05/21 18:23:20


78:デフォルトの名無しさん
08/05/22 18:56:45
Sizeをいちいち、System::Drawing::Sizeって書くのがめんどくさいんだけど、
どうにかならんの?
なんで型名なのに、メンバのSizeが優先されちゃうの?

79:デフォルトの名無しさん
08/05/22 19:40:44
namespace dr = System::Drawing;
これでdr::Sizeってできる。

<windows.h>をインクルードして、Windows APIの名前と
.NETクラスライブラリの名前が被るときにも使える。


80:デフォルトの名無しさん
08/05/25 12:47:41
C# と比較して C++/CLI ってやってる人少いの?

81:デフォルトの名無しさん
08/05/25 13:09:03
C#とC++の橋渡し以外使う価値無いから、少ないだろ

82:デフォルトの名無しさん
08/05/25 13:35:04
C#かVBと組み合わせて初めて価値が出る言語だし

83:デフォルトの名無しさん
08/05/25 17:56:15
俺はCLIがメインw

84:デフォルトの名無しさん
08/05/26 01:54:15
すいません、WebBrowserで選択中のテキストを取得する方法はありますでしょうか?
WebBrowserやDocumentクラスにないですし、ExecCommandにも該当する方法はないみたいです。

クリップボードにコピーして取得する方法もないではないですが、クリップボードの内容を壊したくないので・・・


85:デフォルトの名無しさん
08/05/26 05:33:06
selection
createRange
text

86:デフォルトの名無しさん
08/05/26 07:46:28
>> 83
おれは、全部、C++ or C++/CLI でいいのにって思ってしまう

87:デフォルトの名無しさん
08/05/26 14:18:34
^

88:デフォルトの名無しさん
08/05/27 09:26:26
C#のP/Invokeめんどくせ。
この言語って、windows.hインクルードすれば、APIそのまま呼べるようになる?

89:デフォルトの名無しさん
08/05/27 09:32:36
呼べる

90:デフォルトの名無しさん
08/05/27 09:37:06
MFC で UI 周り作って、/clr オプションつけて内部で .net fx 使ってるけど、かなり楽
C++0x もいいけど、便利なライブラリフレームワークも重要だと思うんだ

91:デフォルトの名無しさん
08/05/27 12:02:26
MFCランタイムと.NETランタイムを両方使ってると思うだけで萎えるわ。

92:デフォルトの名無しさん
08/05/27 12:16:27
使い方が逆だろう

93:デフォルトの名無しさん
08/05/27 22:54:03
まあCWinFormsControlとかあるくらいだし、
そういう使い方も想定されてはいると思う。
主目的は移行用だろうけど。

94:デフォルトの名無しさん
08/05/28 05:12:11
CLIでDirectXとか使えんの?

95:デフォルトの名無しさん
08/05/28 05:42:15
XNA FrameworkはC++/CLIで書かれている

96:デフォルトの名無しさん
08/05/28 06:17:25
Managed Direct Xはどこにいったよ?

97:デフォルトの名無しさん
08/05/28 06:43:21
>>89
thanks
本格的に移行しようかな。

罠とかある?


98:デフォルトの名無しさん
08/05/28 09:17:47
.NET Frameworkがないと動かない。
あと罠ではないが、ハンドルの扱いは
SafeHandle が使いやすいぶんC#のほうが楽だと思う。
C++/CLIで確実にハンドルが解放されるようにするのは
ちょっと面倒なんだよね。
どっかで SafeHandle 使うようにした Win32API の DllImport集
公開されてないかなあ。

99:デフォルトの名無しさん
08/05/28 09:32:06
>97
ヘッダで定義されたdefineの衝突に注意。後、enum を混在させない
リソースの管理は、マネージドはマネージド、ネイティブはネイティブで管理する
.net fx をライブラリとして使える C++ と言う位置付けを忘れない
こんなところかな
COM の扱いが、com::ptr で済むのが楽だね

100:98
08/05/28 10:16:11
ごめん。やってみたら C++/CLI でも
C# と同じやり方で SafeHandle 使えたわ。
検索してもC#とVBの資料しか出てこないからできないもんだと思ってた。
コールバック関数要求するアンマネージド関数に
delegate 渡すこともできるな。
なんでこういうの紹介してるページがないんだ。
C#のコードばっか載せやがって。

ただし、こういう小技を使おうとすると結局自分で
DllImport書かなきゃいけないので windows.h との親和性は低いけど。
こういうの全部取り込んだ windows.h があればいいのに。

101:デフォルトの名無しさん
08/05/28 13:05:09
>>98−100
ありがとうございます。

API?STL?NET?
なんでもドンと来い。サクッと受け止めてやる!

って感じの言語みたいだね。
なんでもこいは諸刃の剣なので気をつけないと・・・


102:デフォルトの名無しさん
08/05/28 18:03:35
>>95
全部C++/CLIじゃなくて,C#を併用してるっぽい

103:デフォルトの名無しさん
08/05/28 18:29:52
>>100
Marshal.GetFuctionPointerForDelegate使えば、<windows.h>を活かせる。
ただreinterpret_castをしないといけないから、結局ラップしたくなる罠。

104:デフォルトの名無しさん
08/05/28 19:37:11
C# でできて C++/CLI でできないことは、あんまりない

105:デフォルトの名無しさん
08/05/28 21:47:27
WPF使えないしたぶんSilverlightも同じだろうね

106:デフォルトの名無しさん
08/05/29 00:46:31
WPF は普通に使えるだろ
XamlReader 使ってもよし、普通にコードで GUI 使ってもよし

Silverlight だって、アセンブリは C++/CLI の Safe コードで書けるんじゃないかな
試してみるか

107:デフォルトの名無しさん
08/05/29 09:25:26
あげるならXNAか

108:デフォルトの名無しさん
08/05/30 11:07:30
>>106
それで使おうと思う?
WPF自体が糞とかいうのは置いといて

109:デフォルトの名無しさん
08/05/30 11:10:08
WTL を使うのに比べれば、インテリセンスが標準で効くだけまし

110:デフォルトの名無しさん
08/05/30 14:46:01
マニアックな人しか使わんのかこれは

111:デフォルトの名無しさん
08/05/30 15:06:25
必要になったら使う、って感じじゃないか?

112:デフォルトの名無しさん
08/05/30 15:43:54
マネージ埋め込みリソースの参照がかなり面倒なんだけど、
なんでC#みたいに、Properties.Resources.リソース名で
一発アクセス出来ないの?

113:84
08/05/31 22:12:20
>>85
遅レスですが、
Document->DomDocumentを取得後に
その手順でできました。

ありがとうございます。

114:デフォルトの名無しさん
08/06/01 01:56:08
仕事で他の人間に頼まれて、何日かCLIでバリバリ書いた後、
C++に戻ると、ついつい"gcnew"を連発してしまう

115:デフォルトの名無しさん
08/06/02 17:32:52
C#のあとの配列newみたいなもんですね

わかります

116:デフォルトの名無しさん
08/06/03 15:50:13
C#のあとのfor eachみたいなもんですね

わかります

117:デフォルトの名無しさん
08/06/03 16:22:02
それは無い

118:デフォルトの名無しさん
08/06/03 19:09:28
あるあry

119:デフォルトの名無しさん
08/06/04 00:21:57
^←これなに?
ポインタモドキ?

120:デフォルトの名無しさん
08/06/04 00:39:41
それはハット

121:デフォルトの名無しさん
08/06/04 08:21:37
マネージドアプリを C++/CLI で作るのは邪道ですか?

122:98
08/06/04 08:46:51
あんまりメリットはないと思う。

123:デフォルトの名無しさん
08/06/04 18:00:03
MS的には事実上非推奨

124:デフォルトの名無しさん
08/06/04 20:36:39
C++/CLIのメリットって何?

125:デフォルトの名無しさん
08/06/04 20:44:05
C++でしか使えないライブラリを.NET用にラップするのが簡単になることじゃないか?

126:デフォルトの名無しさん
08/06/04 23:19:21
あとはCOMのインターフェースを扱うときとかな
OSが実装しているCOMのインターフェースをC#やVB.NETで書き直すのは馬鹿らしい

127:デフォルトの名無しさん
08/06/04 23:22:01
逆にC#のメリットって何?

128:デフォルトの名無しさん
08/06/04 23:56:57
書きやすい

129:デフォルトの名無しさん
08/06/05 00:28:30
情報(サンプルソースなど)が豊富。

130:デフォルトの名無しさん
08/06/05 00:35:15
ヘジたんが好きです

131:デフォルトの名無しさん
08/06/05 14:05:42
なんか、この手の質問ループしてないか?

132:デフォルトの名無しさん
08/06/06 15:58:50
過疎るな
それ以外の話題がないのかwwwwwwww

133:デフォルトの名無しさん
08/06/06 18:56:24
.NET各言語のまとめ

C++/CLI  闇ナベ言語
C# ヘルスバーグ萌え言語
VB 建て増しを繰り返した温泉旅館言語
J# J++手切れ金言語
JScript.NET (´・∀・`)ゲンゴ
F# 趣味言語


134:デフォルトの名無しさん
08/06/06 19:58:55
Spec#とSing#……勝手に☆拡張!

135:デフォルトの名無しさん
08/06/06 21:30:05
>>133
F#ってFortran#かForth#のどっち?


136:デフォルトの名無しさん
08/06/06 21:40:18
>>135
OCamlのクローン

スレ立ってるよ
スレリンク(tech板)l50


137:デフォルトの名無しさん
08/06/06 21:53:12
JScript .NETスレがこのスレより伸びているのは不思議でいけない
スレリンク(tech板)l50


138:デフォルトの名無しさん
08/06/06 22:01:12
見に行ってみたけどあれは伸びてるって言っていいのか?w

139:デフォルトの名無しさん
08/06/09 10:26:58
で、どうしろと?

140:デフォルトの名無しさん
08/06/10 22:09:43
Thread^ jisure = gcnew Thread("C++/CLI part4");

jisure->build("プログラム板");

for(int i=0; i<1000; i++) {
  // TO DO
}

jisure->Close();

141:デフォルトの名無しさん
08/06/11 18:11:10
ヘッダーのみで書いてるけど

生のC++と比べて
C++/CLIだとコンパイルが数倍速い気がする。


142:デフォルトの名無しさん
08/06/12 19:00:13
>>141
ほとんどref classだけで書くとコンパイル速度は速くなる。
C#のコンパイルが早いのと同じ理由。
生のC++で書いてただそれを/clr でコンパイルしただけの場合はかわらない。

143:デフォルトの名無しさん
08/06/15 15:36:54
c++/cliでxnaって使えるんですか?
ウィンドウを出すまでは出来たって人がいるみたいですけど

144:デフォルトの名無しさん
08/06/15 17:17:46
少なくとも/clr:safeは必須だろうな。

145:デフォルトの名無しさん
08/06/15 17:34:19
>>143
Xbox 360で動かすなら/d1clr:nostdlibも必要になるかも。

146:デフォルトの名無しさん
08/06/16 19:35:50
Windowsなら普通に使えるけど意味ないわな

147:デフォルトの名無しさん
08/06/28 13:39:34
STL/CLIでIntellisenseの効きが悪すぎる

148:デフォルトの名無しさん
08/07/01 20:08:34
メインのフォームに
別のフォームを
・タスクバーのアイコン無し
・閉じるボタンをなくす、もしくはCloseじゃなくSW_HIDEみたいにしたい
んですが
どうすればいいのでしょうか?

149:148
08/07/01 20:17:29
事故しました

150:デフォルトの名無しさん
08/07/01 20:28:19
メインフォームのLoad〜

サブフォームを作成(gcnew してShow)

サブフォームを閉じてしまった場合、
再度表示するには、どうすればいいでしょうか?

もしくは、そのオブジェクトが閉じられてるかどうかを確認するには何をチェックすればいいのでしょうか?

151:デフォルトの名無しさん
08/07/01 21:15:41
CloseしないでHideすればいいんじゃね

152:デフォルトの名無しさん
08/07/01 21:20:20
MSDN で、Visible プロパティとShowメソッドを10遍読んでこい

153:デフォルトの名無しさん
08/07/03 16:48:57
hideの身長は何センチですか?

154:デフォルトの名無しさん
08/07/03 20:07:21
hydeだろ

155:デフォルトの名無しさん
08/07/09 16:15:57
ネイティブのDirectX使いたいんですけど、
初期化時に必要なフォームのウィンドウハンドルはどうやって取得すればいいのでしょうか?

156:デフォルトの名無しさん
08/07/09 16:21:24
(HWND)this->Handle.ToInt32();


157:デフォルトの名無しさん
08/07/09 16:28:57
>>156
ToPointerだな

158:デフォルトの名無しさん
08/07/09 17:09:56
どっちでもいけたお

159:デフォルトの名無しさん
08/07/09 17:54:50
64bit

160:デフォルトの名無しさん
08/07/14 17:45:14
FormやPictureBoxのイベントハンドラを見ても出てないのですが、.
net 2003ではMouseWheelイベントは定義されていないのでしょうか?


161:デフォルトの名無しさん
08/07/14 17:52:14
隠されてんじゃね
基底であるControlで定義されてるから存在しないわけじゃない

162:160
08/07/15 16:47:11
>>161
ありました。VB以外だと自分で定義してやらないといけないのですね。

163:デフォルトの名無しさん
08/07/16 07:28:12
別のイベントが連鎖的におきてそちらのイベントを使うことが多いから
[Browsable(false)] にしてあるのだろう。



164:デフォルトの名無しさん
08/07/16 21:47:24
関数ポインタ配列の宣言がどうしてもコンパイル通らないんです。
よかったら何がだめなのか教えてください。

public ref class Form1 : public System::Windows::Forms::Form
{
public:
...
  int fn1(int,int);
  int fn2(int,int);
  int fn3(int,int);
  int (*fp[])(int,int){
    fn1,
    fn2,
    fn3
  };
...


ちなみにerror C4368です。

165:デフォルトの名無しさん
08/07/16 21:55:08
関数ポインタはアンマネージ
デリゲート使いな

166:デフォルトの名無しさん
08/07/16 22:08:11
>>165

アンマネージだったんですか。ポインタはだめとかそんなことを聞いたきがします。
ありがとうございます。

167:デフォルトの名無しさん
08/07/17 09:30:03
>>164
普通の関数とメンバ関数は、ポインタ型にすると別物だけど、
わかってるのかな?

168:デフォルトの名無しさん
08/07/17 17:00:04
C#でやるより少々手間がかかりますな。
delegate int fd(int x, int y);
array<fd^>^ fp;
fp = gcnew array<fd^> { gcnew fd(this, fn1), gcnew fd(this, fn2), gcnew fd(this, fn3) }

ネイティブクラスの関数ポインタは ->* が出てきて泥沼に陥るからやめたほうがいい。

169:デフォルトの名無しさん
08/07/17 21:20:42
>>167
わかっていないですorz調べてみます。ありがとうございます。
>>168
デリケートを使うことでコンパイルも通り,プログラムも完全はしましたが,>>168が何をいっているのかわかりませんorz
まだまだです…

本当にありがとうございました。

170:デフォルトの名無しさん
08/07/17 21:25:59
>168
イベント使ったら?


171:デフォルトの名無しさん
08/07/18 09:43:55
うん普通はイベント使うよね

172:デフォルトの名無しさん
08/07/18 10:35:31
>>164
>関数ポインタ配列の宣言がどうしてもコンパイル通らないんです。 
という問いだからあえてデリゲートの配列にしたまでで、
そりゃ普通マルチキャストデリゲートとかイベント使うよ。
イベントでadd/remove/raiseを明示的に実装する場合は・・・まあ普通はコレクションだな。

言いたかったのはネイティブクラスもrefクラスの関数ポインタはthisを内包していないことと、
関数ポインタを使う場合やデリゲートにする場合はthisを明示的に指定する必要があること。

C#と比べてうんぬんというのはC#でデリゲートを作るときはthisを暗黙に補ってくれるので
気にしなくて良いということ。


173:デフォルトの名無しさん
08/07/22 09:16:10
A classのメンバにB classの配列を加えるということはできないのでしょうか

174:デフォルトの名無しさん
08/07/22 09:21:39
array<T^>^なら入れられるよ

175:デフォルトの名無しさん
08/07/22 09:33:38
ref class A{
public:
static array<L_SAMPLINGDATA^>^ hoge;
};

ref class B{
public:
static int piyo;
};
---------------------------------
レスありがとうございます。
こんなかんじでしょうか。

176:デフォルトの名無しさん
08/07/22 09:36:50
ref class A{
public:
static array<B^>^ hoge;
};

ref class B{
public:
static int piyo;
};
---------------------------------
まちがえました

177:デフォルトの名無しさん
08/07/23 02:19:37
どういう意図があるのかわからんが static でいいのか?

178:デフォルトの名無しさん
08/08/20 02:17:19
自分からテスト専門です、って宣言してる派遣テスターって何なの?

将来プログラマとかSEになりたい、とかならわかるけど。
向上心ないよね、頑固だし。
そういう派遣テスターって、仕様書は読めない、
テスト仕様書も作れない、テストプログラムも作れない
やれることは「テキトーにプログラムを触る」ことだけ。

俺は派遣プだけどさ、こういう派遣テスターがいると
派遣全体がバカにされるんだよ。
テスト専門派遣なんて氏んで欲しいよ、まったく。

今日も正社員の人が派遣テスターに仕様書を読んで
テスト仕様書を作ってください、って説教してたよ。
その派遣は頑固に「何故、仕様書が必要なんですか?」って
反論してたから、きっとテスト専門派遣テスターだな。
仕様書も読まず、テスト仕様書も作らず、ただテキトーに
プログラム触るだけで給料もらおうなんて頭おかしいんじゃねーの?

あ〜あ、あの派遣テスターが3ヵ月後に切られるまで、
仕様書も読まねーでテキトーにテストしたバグ票がまわってくんのかよ。
そんな糞なもん、読んで処理する派遣プの身にもなってくれよ。
うわ〜、しかもそいつが切られる3ヵ月以内に中間納品あるじゃねーか!
テスト仕様書もなしにテキトーにテストして納品か。
中間納品後にソッコウクレームでデスマ必至だな。俺の休みも返上かよ。

派遣専門テスターさんよ、少しは向上心持てよ!
頑固な性格直して仕様書読めよ!テスト仕様書作れよ!


179:デフォルトの名無しさん
08/08/28 14:39:28
誘導されました

マネージコードでdllを作成することってできる?

dllのソース内でSytem::Stringを使おうとしたらC4747エラーがでちゃった
ソースの方に「#pragma unmanaged」宣言してるから仕方ないんだけどさ

なんかやり方あるんでしょうか?

環境はvc++2005でc++/cliでやってます

180:デフォルトの名無しさん
08/08/28 14:44:01
どんなDLLが作りたいの?

181:デフォルトの名無しさん
08/08/28 15:11:28
#pragma managedができない差し迫った理由でもあんのけ?
ちゅーかCLRでプロジェクト作ればまんまマネージアセンブリができるはずだが。

182:デフォルトの名無しさん
08/08/28 15:21:07
>>179
#pragma unmanagedなしでも__declspec(dllexport)な関数は作れるぞ。

183:デフォルトの名無しさん
08/08/28 16:04:26
関係ないけど、C++/CLIでSusieプラグインのコールバック書いたらすごく遅くてビビった。
何回も呼ばれるとアンマネージ-マネージ間のオーバーヘッドも馬鹿にならんな。

184:デフォルトの名無しさん
08/09/07 23:04:10
既存のNativeのC++コードをC++/CLI
でくるんでC#から呼び出す方法がいくつか検索できるけど
(MicrosoftのC++開発チームもそれを奨励しているみたい)、
これって実際に余程、腕が習熟してないとトラブルに見舞
われそうだと思うけどどうですか?

もう、MFCなんか使ってnativeのC++で押し通した方が
良いように思うけど。とくに、カーネルの数値計算部
がNativeコードでできている場合

185:デフォルトの名無しさん
08/09/08 00:15:06
それでいいんじゃない?
その時、/clr 付けておけば、.net framework も使えるし
C# のライブラリも使える

186:デフォルトの名無しさん
08/09/08 00:21:19
スレリンク(gamedev板)
749 名前:名前は開発中のものです。[sage] 投稿日:2008/09/07(日) 13:50:13 ID:TzkL+YXR
C++/CLIなら.NETの便利なクラスライブラリやビジュアルデザイナを
C++から都合よく使えるとか思ってるなら大間違い

187:デフォルトの名無しさん
08/09/08 00:32:05
は? GUI は MFC か WTL だろ
>184 もそう言ってるじゃないか

188:デフォルトの名無しさん
08/09/08 01:49:41
>>184
別にネイティブコード呼び出すだけならC#からP/Invokeでも良いじゃん。
一度C#+WinForms+ビジュアルデザイナの開発に浸っちまうとMFCとか戻りたくない。

というかC++/CLIは使うかどうか迷うようなもんではないだろ。
C++/CLIのプロジェクト自体ほとんど見たことないが、
例えばアンタがXNAやSlimDX(DirectXのマネージラッパー)
みたいなアセンブリを作ろう思った時に、欲しい言語はどんな感じになると思う?

189:デフォルトの名無しさん
08/09/08 09:20:33
dllimport並べたC#

190:デフォルトの名無しさん
08/09/08 10:33:14
>>189
DirectXインターフェイスみたいなクラスのメンバ関数はどうするの? 
FBX SDKみたいなバイナリ提供しかされていないライブラリが沢山ある場合は?

C#+DllImportにこだわって関数テーブルからのオフセット調べたり
API変換のみのネイティブDLLをライブラリ毎に作るくらいなら
C++/CLIでマネージクラス書いた方が多少はマシだぞ思うぞ。

191:デフォルトの名無しさん
08/09/08 11:05:30
すでにC++のコードがある場合、それをC#から使うのにいいな。

192:デフォルトの名無しさん
08/09/08 11:09:30
>>190
>DirectXインターフェイスみたいなクラスのメンバ関数はどうするの?

DirectXインターフェイスならCOM準拠なんだからCOM Interopでいいじゃん。

>FBX SDKみたいなバイナリ提供しかされていないライブラリが沢山ある場合は?

Interop Assistantでヘッダファイルを構文解析して、P/Invoke定義をコード生成する。
URLリンク(blogs.msdn.com)


193:デフォルトの名無しさん
08/09/08 11:11:31
FBX SDKってもしかして*.libのみ提供?

194:デフォルトの名無しさん
08/09/08 12:10:02
>>192
>DirectXインターフェイスならCOM準拠なんだから
DirectShow以外は準拠しとらんよ。tlbもidlもない状態からinteropできたっけ?
まぁDirectXに限らずCOM以外のC++クラスライブラリは無理だわな。

>Interop Assistantでヘッダファイルを構文解析して、P/Invoke定義をコード生成する
言葉足らずで悪かったが、スタティックライブラリのみの提供の場合ね。

195:デフォルトの名無しさん
08/09/08 21:18:14
>>194
>DirectShow以外は準拠しとらんよ。tlbもidlもない状態からinteropできたっけ?

できるよ。tlbやidlはコードジェネレータの種に使っているだけで、
実行時にはMSILのメタデータしか使ってないから。
同じものをC#で書ける。

196:デフォルトの名無しさん
08/09/08 22:30:35
そもそもAPIからIUnknown弄ればどうとでもなる

197:デフォルトの名無しさん
08/09/08 23:01:19
C++もC#も理解していて、さらにC++/CLIをやってやろうという意気込みがあれば、
DllImport並べたりCOMInteropでどうにかするより楽に感じると思う。
つまりそれくらいの意気込みがないとつらいかなとも思う。

198:デフォルトの名無しさん
08/09/09 23:04:31
実現したい機能がリフレクションを使わないと書けないかめんどくさい
・Type.getType()相当のプリミティブ
・Invoke()相当のプリミティブ
 があれば文字列をえっちらおっちらこさえれば.NET Frameworkのコードが呼べるはず。
 これならスタック二段増えるだけなので手間じゃないはず。(文字列こさえるのはともかくとしてね……)
 大本のプリミティブの下に積んでやれば下位互換性も保たれる。


199:デフォルトの名無しさん
08/09/14 07:17:54
447 名前:デフォルトの名無しさん[] 投稿日:2008/09/14(日) 01:09:45
Express 2005で3連休プログラマーなんだけど、

 String^ folderName;

の ^ ってなに?

200:デフォルトの名無しさん
08/09/14 07:27:27
マネージドオブジェクトの参照。それ基本だから入門サイトで勉強しなおせ。

201:デフォルトの名無しさん
08/09/14 14:24:38
.NETでiniファイルの読み書き詳しく

202:デフォルトの名無しさん
08/09/14 14:27:51
C++/CLIならAPIをじかに呼べる。/clr:safeやC#などからならP/Invokeを使う。
その前にini使うようなデザインはもうするな。

203:デフォルトの名無しさん
08/09/14 17:31:54
仕様に書いてあるから訊いているのであって
お前ごときが意見するのはおこがましいちは思わんかね?

204:デフォルトの名無しさん
08/09/14 17:35:18
クスクス クスクス

205:デフォルトの名無しさん
08/09/14 17:37:55
このレベルのことはプログラマの権限の範疇だろ。
そうじゃなかったらプログラマでなくお前はコーダーだ。

206:デフォルトの名無しさん
08/09/14 17:40:57
あげてるし釣りだろ
そろそろ後釣り宣言が来るかもね

207:デフォルトの名無しさん
08/09/14 20:48:40
iniファイルは釣りでした。
起動してるプロセス(リスト)の取得教えて

208:デフォルトの名無しさん
08/09/14 20:49:53
起動時にPIDをファイルに書いとけ

209:デフォルトの名無しさん
08/09/14 21:36:58
そもそもC++/CLI関係なくね

210:デフォルトの名無しさん
08/09/14 21:59:34
くだすれ.NET逝け

211:デフォルトの名無しさん
08/09/14 23:36:22
>>197
しかし DllImport, COMInterop にも利点があってアセンブリが
AnyCPU に出来るという一部受けする魅力が
パワーがあるんならだからそっちのほうがと思うとやっぱり
C++/CLI って移行移行言っているのはそういう話なのではと。
言語的な話もあれども。

212:デフォルトの名無しさん
08/09/15 01:40:00
日本語ぎりぎりだな

213:デフォルトの名無しさん
08/09/15 17:30:40
もうやだこの世界

214:デフォルトの名無しさん
08/09/15 17:42:28
C++/CLIこそ.NET

215:デフォルトの名無しさん
08/09/19 15:24:08
自分以外のユーザのマイドキュメントのパスを取るAPIってない?

216:98
08/09/19 15:38:38
なぜここで訊く

217:デフォルトの名無しさん
08/09/19 15:46:18
c++/cliでやってるもんで・・・
フレームワークにうまいのがないかなと

218:デフォルトの名無しさん
08/09/19 20:48:41
>>215
基本的にアクセスできない & プロファイルのロードは重いのでないん
じゃない。
というか偽装してプロファイルロードしてとりゃいいんじゃないかなぁ。

219:デフォルトの名無しさん
08/09/22 14:31:38
>>218
返信遅くなったんだが教えてくれ

ユーザプロファイルを読み込んで後はどうやってマイドキュメント取ればいいの?
後、ユーザプロファイル取れてるかも自信ないんだが、下で合ってる?

IntPtr lt = IntPtr::Zero;
PROFILEINFO pfi;

LogonUser(L"test", L"", L"test",
 LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
 (PHANDLE)<)

::ZeroMemory(&pfi, sizeof( PROFILEINFO ));
 pfi.dwSize = sizeof( PROFILEINFO );
 pfi.lpUserName = L"test";

LoadUserProfile((HANDLE)lt, &pfi);

220:デフォルトの名無しさん
08/09/22 23:47:22
>>219
C++なんだから、IntPtrよりHANDLEとか適切な型を使おうぜ。
それはともかく、SHGetFolderPathがトークンハンドルを引数を取る。
もしかしたら、ユーザプロファイルを読み込まなくても使えるかもしれない。

221:デフォルトの名無しさん
08/09/24 09:13:10
>>221
レスあり
ユーザプロファイルのロードはしなくても取れました

222:デフォルトの名無しさん
08/09/24 20:36:52
というかそのコードだと LogonUser で自動的にロードしてるな>プロファイル

223:デフォルトの名無しさん
08/10/01 17:16:46
C++/CLIでprintDialogが開くのが遅くて、
printDocument->Print()してからプリントアウトが始まるのも遅いんですが早くする方法ってありますか?

224:デフォルトの名無しさん
08/10/03 21:51:11
C#の
if(hoge is Nazo)
{
 // hogeはNazo型
}
みたいのはどうやって書くの?

225:デフォルトの名無しさん
08/10/03 21:59:13
if (dynamic_cast<Naze^>(hoge))
{
}
dynamic_castはC#のas相当で、C#のisとasは同じILにコンパイルされるということから。

226:デフォルトの名無しさん
08/10/03 22:12:10
できました

227:デフォルトの名無しさん
08/10/04 12:35:06
as は safe_cast 相当じゃないの?

228:デフォルトの名無しさん
08/10/04 12:50:42
safe_castはキャスト失敗した時例外投げる

229:デフォルトの名無しさん
08/10/05 21:43:43
List<T>::Find(System::Predicate<T>(T))

あたりのやつってC++/CLIだと使えないの?

230:デフォルトの名無しさん
08/10/05 21:48:12
別に使えないってこたーない
匿名メソッドやラムダ式が無いから使いづらいけどな

231:デフォルトの名無しさん
08/10/05 22:02:12
匿名メソッドないから、
条件の数だけデリゲートの関数が要る。

232:デフォルトの名無しさん
08/10/05 22:16:36
そこでBoost.Lambdaが……、使えない。

233:デフォルトの名無しさん
08/10/05 22:25:28
比較対象を変数に仕込んだり…

234:デフォルトの名無しさん
08/10/05 22:32:27
こんなカオスな方法が
URLリンク(blogs.wankuma.com)

235:デフォルトの名無しさん
08/10/06 00:14:38
collection_adapterにぶち込んで、cliext::find_ifを使うんだ。
bind1stとか使えるぞ。

236:デフォルトの名無しさん
08/10/08 01:49:56
文字列スイッチはできないの?

237:デフォルトの名無しさん
08/10/08 02:35:14
そこはC++ですから。

238:デフォルトの名無しさん
08/10/09 22:18:18
ひんと はっしゅ

239:デフォルトの名無しさん
08/10/10 14:52:36
C++/CLIのフォームデザイナのコード、あれなんとかならない…?

240:デフォルトの名無しさん
08/10/11 09:10:20
まあそもそもフォームデザイナ使うようなところに使う言語じゃないしね
おまけと割り切るべき

241:デフォルトの名無しさん
08/10/13 10:55:06
C#はISO,JIS承認されたけど、
C++/CLIはISOに蹴られてその後どーなったの?

242:デフォルトの名無しさん
08/10/14 01:18:52
C++0x 待ちじゃね?

243:デフォルトの名無しさん
08/10/15 10:47:55
Bette Cを標榜するならC99のコードは動作してもらいたい。
C++/CLIIはNGになってよかったけど、これに変わるとなると、もう素直にC++0x→D言語でいいんじゃないの?


244:デフォルトの名無しさん
08/11/11 23:17:15
VSで開発してC++用のライブラリ使ってて、
内部で標準C++ライブラリが使われてmsvcr80.dllとかが要求されるんだが、
完成間近にいざ別の環境に持っていくと動かなかった。
.net入れてたら動くかと思ったんだが・・・
CRTオプションが/clrだから/MT(without DLL)が併用できないと怒られたし。
どうしよう(・ω・`)
正味CLRの実装レベルの話分かってない俺を誰か助けてくれ。

245:デフォルトの名無しさん
08/11/11 23:19:24
>>244
それはランタイムが足りないから。
Visual C++ 再頒布可能パッケージってのをインストールするんだ。
バージョン(SPの有無も)、x86/x64/IA64で別々だからそこんとこ間違えないように。

246:デフォルトの名無しさん
08/11/12 06:20:13
xp以降はおなじmsvcr80.dllでもビルドやリビジョンが下位の場合は読み込まない。
.NET2.0を導入すると.NET2.0が使ってる8.0.50727.42(or163?)が、
.NET3.0を導入すると.NET3.0が使ってる8.0.50727.1833がインストールされるが、
VS2005の最新パッチ状態でコンパイルしたものは8.0.50727.3053を必要とする。
このために.NET2.0が入っていてもmsvcr80.dllがあっても見つからないというエラーが発生する。

247:デフォルトの名無しさん
08/11/12 07:52:30
別に .net 関係ない話だし

248:デフォルトの名無しさん
08/11/12 08:46:47
CRTを使ってるからたまたま一緒にインストールされるという話だね。
インストーラーやClickOnce、または再配布モジュールで導入するのが筋だろう。
.NETでCRTを使ってるのはCSC.EXEとかMSCORWKS.DLLあたりだね。

249:デフォルトの名無しさん
08/11/12 08:53:36
C++/CLIでCRTを使いたくないなら、/clr:safeにする必要がある

250:デフォルトの名無しさん
08/11/12 20:22:04
ねーよ

251:デフォルトの名無しさん
08/11/12 22:01:08
CLIの機能(プロパティやGC)は使用したいけれど.net frameworkは使用しない場合で、
.net frameworkのランタイムが入っていない環境で動作する様にできるんですか?

252:デフォルトの名無しさん
08/11/12 22:16:09
Monoでも入れてみるかね

253:デフォルトの名無しさん
08/11/12 23:48:07
CLIって.NET Frameworkの仕様のことなんだが

254:デフォルトの名無しさん
08/11/12 23:58:02
>>253
おそらくC++/CLIのつもりなんだろ

255:デフォルトの名無しさん
08/11/13 00:10:24
CLIの機能を使いたいが、.NETは嫌だというなら、>>252しかないな。

256:デフォルトの名無しさん
08/11/13 00:19:45
そういえばなんでSTL/CLRはCLIじゃなくてCLRなんだろう
仕様を定めてるんじゃなくて、あくまでCLR用のライブラリそのものを指すから?

257:デフォルトの名無しさん
08/11/13 20:18:48
Mono調べてみました
・・・素直に. netを使おうかと思います^^;

C++/CLIは独自仕様で直接.net frameworkとは関係ない所なので
C++/CLIだけ利用できないかな?と思ったので質問しました。

258:デフォルトの名無しさん
08/11/13 20:37:48
C++/CLIっていうのは文字通りCLI(.NET Frameworkのコア仕様を定めるもの)
をサポートしたC++なんだよ?
その点C#は言語仕様が直接CLIに依存してないから
C++/CLIに比べて.NETとの繋がりがむしろ弱いともいえる

259:デフォルトの名無しさん
08/11/13 21:54:38
まあ現実にはCLIなしのC#なんて考えられないけどな。

260:デフォルトの名無しさん
08/11/13 22:01:39
コンパイラとGCとBCL一通りさえ実装すればC#と名乗れるんでしょ?
誰かやりそうだけど誰もやらないね

261:デフォルトの名無しさん
08/11/13 22:09:01
そうなんですか、それでもやっぱりC++/CLIだけ使用して
.net frameworkを使用しないっていうことはできないんですよね。残念です

262:デフォルトの名無しさん
08/11/13 22:21:49
>>260
mono

263:デフォルトの名無しさん
08/11/13 22:38:24
プロパティに夢見てCLIにソースコピペ

プロパティ追加したらアンマネージにマネージは作れないと怒られる

クラスをマネージにしてみる

処理速度激減。なぜかインライン展開できてないorz

アンマネージクラスにプロパティとか新しい列挙とか作る方法ってないの?
マネージ系はインラインできないの?

264:デフォルトの名無しさん
08/11/13 23:03:44
マネージコードでのインライン展開はJITの仕事。

ネイティブでのプロパティはCOM対応のおかげで昔からあったが別構文。
URLリンク(msdn.microsoft.com)

265:デフォルトの名無しさん
08/11/13 23:06:46
遅くなってるのは、インライン展開やマネージコードになったことよりも、
アンマネージコードとマネージコードの境界を意識してなくて行き来が多発しているのが原因だと思う

266:デフォルトの名無しさん
08/11/14 08:16:06
まぁ、素人はネイティブをメインに gcroot でも使ってろってこった

267:デフォルトの名無しさん
08/11/14 08:42:35
monoでのC++/CLIの対応状況。
コンパイラのサポートはなし。
Microsoft.VisualC.Dllは存在していてsafeモードでコンパイルされたものは動く。
その内訳。
 mono2.0.1現在ではVS2005でコンパイルしたものは動く。
 vs2008でコンパイルしたものは動かない。STL/CLRも未サポート。
mix, pureモードでコンパイルされたものは動かない。


268:デフォルトの名無しさん
08/11/15 20:47:23
VC2008EEで勉強してます。
アップウィザードの自動生成が嫌なので、
空のCLRプロジェクトを選択して
int main()
{
Application::Run(gcnew Form());
return 0;
}
という最小限のプログラムを作ってみました。
プロンプトを表示させないようにするには
どうすれば良いのか教えて下さい。



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4941日前に更新/88 KB
担当:undef