[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 04/12 03:21 / Filesize : 122 KB / Number-of Response : 487
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれC++/CLI(初心者用)part2



1 名前:./1256645713/662 mailto:sage [2010/03/15(月) 09:41:19 ]
おそらく、.NET開発でデファクトスタンダードに最も近いであろう
C++/CLIについて語ろうぜ!

このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。
.NETのクラスライブラリの使い方といった質問は Visual Studioスレにお願いします。

前スレッドはこちら
くだすれC++/CLI(初心者用)
pc8.2ch.net/test/read.cgi/tech/1142144110/l1

dat落ち姉妹スレ
C++/CLI part3
pc12.2ch.net/test/read.cgi/tech/1206447234/l1
pc11.2ch.net/test/read.cgi/tech/1142147319/l1
pc8.2ch.net/test/read.cgi/tech/1126450441/l1

managed C++ やろうぜ!! 002
pc8.2ch.net/test/read.cgi/tech/1139043535/l1

249 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 16:00:21.03 ]
>>247
サロゲートペア対応に挑戦しようと思うのだが、VS2010expressのコンパイラでエラーになる。
なんかスマートな対応方法ないすか?


literal String^ str = L"「叱る」と「\uD842\uDF9Fる」";

error C3850: '\uD842': ユニバーサル文字名が無効な文字を指定しています。
error C3850: '\uDF9F': ユニバーサル文字名が無効な文字を指定しています。


250 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 21:36:58.89 ]
>>249
ググると𠮟るのユニコードは「20B9F」となってるけど。

251 名前:デフォルトの名無しさん [2011/04/27(水) 21:40:24.11 ]
textBoxに入力した文字を分割して配列に割り当てる方法がわかりません

252 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 22:11:33.08 ]
C# 文字列 分割 でググれ
C#だぞ。C++/CLIじゃないぞ。

253 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 23:46:28.19 ]
>>249
\uxxxxじゃなくて\UxxxxxxxxでUTF-32使って指定するとか?

254 名前:249 mailto:sage [2011/04/29(金) 10:49:09.60 ]
>>250,253
CLRは内部コードが16bitのユニコードなのでこうなちゃうんですね。

C#はこれでいけるのですけどね;;
const string msg = "「叱る」と「\uD842\uDF9Fる」";

とりあえず、これで対応しました。
array<wchar_t>^ cmsg = { L'「', L'叱', L'る', L'」', L'と', L'「', 0xD842, 0xDF9F, L'る', L'」' }; 
String^ msg = gcnew String(cmsg);

サロゲート対応のコードを書いてみました。
ideone.com/rXbuf

255 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 11:04:15.35 ]
string.Concat(
 StringInfo.GetTextElementEnumerator(s)
 .Cast<string>()
 .Reverse()
 .ToArray()
)
でええやん(めんどくさいからC#)

256 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:57:21.31 ]
サロゲートと聞くと松田聖子を思い出す

257 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 13:17:08.71 ]
.GetTextElementEnumeratorの戻値はIEnumerableじゃくて
IEnumertorだから直接Linqにつなげない。



258 名前:デフォルトの名無しさん [2011/04/30(土) 13:14:38.20 ]
文字をシフトJISに変換する方法

259 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 13:32:03.61 ]
一行で様々な疑問を出させる才能

260 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 13:44:13.14 ]
C++/CLIの具体的な難点ってなんでしょうか?
少し触ってみたところ、GUIも作り易い感じがするしCライブラリも簡単に使えそうだし、
いったいどういう問題があるのかなと気になりました
(VC++2008EEなのでintellisenseもとりあえず大丈夫です)

261 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 21:00:19.76 ]
C#やVBと比較して生産性が遥かに劣る
それだけ

262 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 21:23:06.33 ]
>>261
できればもうちょっと具体的にお願いします

263 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 21:55:07.50 ]
・C++言語ではなくではなくてC++/CLI言語であること、
 C++/CLI独特の文法を覚える必要がある。C#との互換性もない。
・使う人が少ないので情報が少ない
・Intelisenceの不具合が多い(例え2010でも逃れられない)
・中途半端にネイティブなのでCLRとしての最適化も中途半端。

264 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 22:05:31.03 ]
Cのライブラリ使うにしても、DllImportの手間を差し引いてもよっぽどでなきゃC#の方が楽なんだよね

265 名前:260 mailto:sage [2011/05/15(日) 19:08:05.61 ]
どうもありがとうございます
Visual C#を試しに入れてみたところ、
何だこれは…ひょっとしてC++/CLIだけでなくVisual C++自体が手抜き…?と思ってしまいました
これだとたしかに生産性に差が出るかもと思うと同時にMSの露骨な贔屓に少し閉口してしまいました
まだほんの入口ですしCライブラリについて不安はありますが、とりあえず使ってみようと思います

266 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 23:25:23.90 ]
VC++はネイティブC++の開発環境としては現在最高だろ
言語そのものがインテリセンスやRADに向いてない
C++にはC++にしかできないことをやらせるとMSは言ってるので
フォームデザイナを使うような用途へのサポートが強化されるようなことは今後も期待できない
C++はネイティブ特化、C++/CLIは橋渡し専用

267 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 00:10:28.27 ]
まだVS2010のC++/CLIのインテリセンスないのか
この分だともうずっと出ないだろうな



268 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 09:33:24.32 ]
2010で外されたってことは、MSは諦めたってことなじゃないの?

269 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 10:32:51.80 ]
いや、次のバージョンでは復活させるって言ってる。
問題は「次」というのがSP2なのかVS2014とかになるのかが分からないこと。

270 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 10:37:08.05 ]
その前にC++/CLI自体が…
今やMSにとってはATLでCOM触るラッパーを書くためだけの言語だからなあ

271 名前:デフォルトの名無しさん [2011/05/24(火) 01:29:53.63 ]
/*********************************/
/* __finallyブロックは何のために */
/*********************************/
try {
throw 128;
} catch (int num1) {
System::Console::WriteLine("catchブロック: num1 == {0}", num1);
} __finally {
System::Console::WriteLine("__finallyブロックって何の意味があるのか疑問だな");
}
System::Console::WriteLine("__finallyブロックがなくても、throwの有無にかかわらずここで実行できるじゃないか。");

272 名前:デフォルトの名無しさん mailto:sage [2011/05/24(火) 21:38:05.21 ]
だがその処理の呼び出し元でcatchしたかった時はどうする?
C++なら自分で再throwする必要があるが、
finallyを使えばそういうことを考える必要がない。

ついでに言うと、finallyブロックは
例外が起きようとも起きなかろうとも、
breakやreturnで抜けても必ず実行されるので
ファイルの閉じ忘れなどを回避する実に有効な手段である。

273 名前:デフォルトの名無しさん mailto:sage [2011/05/24(火) 23:17:43.72 ]
スタック割当構文じゃだめなの。

274 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 23:31:46.12 ]
>>273
だいたいそれで間に合うとは思う。
auto_handleやauto_gcrootの助けもあるしな。

まあ、今までのVisual C++にも__finallyあるし、C#にもfinallyあるし、
あえてC++/CLIに__finallyを搭載しない理由もないと言ったところでは?

275 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 01:03:44.37 ]
使ったオブジェクトのデストラクタ呼ぶだけでいいケースは確かに多いけどそうじゃないときもあるだろ
その場限りのちょっとした後処理のためにもいちいちクラス作るの?

276 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 05:07:03.51 ]
超初心者です。
教えてほしいのですが、
hoge(int *piyo)は
hoge(int^ piyo)と
してるのですが
hoge(int **piyo)は
どのように書き換えれば良いのでしょうか
すいませんが教えてください



277 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 12:12:03.85 ]
array<int^>^ piyo とか?



278 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 20:22:59.15 ]
/* Hashtableのポインターへのポインターがコンパイルエラー */
using namespace System;
using namespace Collections;
const char *pc1;
const int nmax = 4;
// const char * の任意の要素数のデータを動的にメモリを割り当てて使う
const char **ppc1 = new const char *[nmax];
int n1 = 0;
*(ppc1 + n1++) = "higasi";
*(ppc1 + n1++) = "nisi";
*(ppc1 + n1++) = "minami";
*(ppc1 + n1++) = "kita";
for (n1 = 0; n1 < nmax; ++n1) {
pc1 = *(ppc1 + n1);
Console::WriteLine(gcnew String(pc1));
}
// 同様の手段で、Hashtable ^^ にメモリを動的に割り当てて任意の数
// のHashtable ^ を格納しようとするとコンパイルエラー
ArrayList ^pArrayList1 = gcnew ArrayList();
for (n1 = 0; n1 < nmax; ++n1) {
pArrayList1->Add(gcnew Hashtable());
}
Hashtable ^pHashtable1, ^pHashtable2;
Hashtable ^^ppHashtable1 = gcnew Hashtable ^[nmax]; // コンパイルエラー
ppHashtable1 = gcnew Hashtable ^[nmax];
for (n1 = 0; n1 < nmax; ++n1) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
// ^(ppHashtable1 + n1) = pHashtable1; // コンパイルエラー
// pHashtable2 = ^(ppHashtable1 + n1); // コンパイルエラー
pHashtable1 = pHashtable2 = nullptr;
}


279 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 20:26:26.71 ]
このコンパイルエラーになる
System::Collections::Hashtable ^^ppHashtable1;
って何とかならんかいな。多重ループで毎回dynamic_cast演算子使ってる
と効率悪いだろうし。

280 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 20:45:23.45 ]
delete [] ppc1; を忘れとった。
それと、ppHashtable1 = gcnew Hashtable ^[nmax];
の行も 「// コンパイルエラー」を忘れ取った。

281 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 01:02:41.42 ]
なんていうか、C++ のことは忘れた方が良いよ

282 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 03:30:26.71 ]
/* cli::array を使ってもコンパイルエラーかいな、難しいもんだな */
cli::array<Hashtable^> ^ppHashtable1 = gcnew cli::array<Hashtable ^>[nmax];
IEnumerator ^pIEnumerator1;
pArrayList1->GetEnumerator();
while (pIEnumerator1->MoveNext()) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
^(ppHashtable1 + n1) = pHashtable1;
pHashtable2 = ^(ppHashtable1 + n1);
pHashtable1 = pHashtable2 = nullptr;
}
pIEnumerator1 = nullptr;


283 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 03:33:53.23 ]
間違えた
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
の行は間違いで正しくは
pHashtable1 = dynamic_cast<Hashtable ^>(pIEnumerator1->Current);
だった。

284 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 04:48:38.33 ]
using namespace System;
using namespace Collections;

typedef Hashtable^ pHashtable;
pHashtable pHashtable1 = gcnew Hashtable();
pHashtable pHashtable2 = gcnew Hashtable();
pHashtable pHashtable3 = gcnew Hashtable();

pHashtable *ppHashtable1;
ppHashtable1 = &pHashtable1; // 可能
ppHashtable1 = nullptr;
// ppHashtable1 = new pHashtable; // コンパイルエラー
// delete ppHashtable1;
// ppHashtable1 = nullptr;
// const int nmax = 3;
// ppHashtable1 = new pHashtable[nmax];
// delete [] ppHashtable1;

new演算子が使えないならSTLのvectorなら何とかなるんだろうか。
でも、.NET Framework 2.0 SDKをダウンロードしたものでは標準ライブラリの
ヘッダーファイルを#includeできないからアンマネージは使えない。

285 名前:276 mailto:sage [2011/05/27(金) 05:15:05.02 ]
中途半端な質問をしてすいませんでした。
>>277さんレスありがとうございました。
実はDirectXのBaseClassesをCLIで書いてるのですが
GetSyncSource( [Out]IReferenceClock** pClock) ;
(IReferenceClockはmanagedインターフェイスです)
の部分をどう書けば良いかわからないです。
interior_ptrというのを使えと出てきますが、使い方がよくわかりません。
どう書けば良いか、どなたかご教示ください。

286 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 05:52:09.46 ]
静的配列も作成できないのか。これもエラーになるのか。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable pHashtable_hairetu[8];
マネージなクラスというのはどうしようもないな、困ったもんだ。

287 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 06:13:49.43 ]
これもエラーになるのか。
やっぱりArrayListのままで甘んじるしかないようだな。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable *pHashtable1 = new pHashtable();
char *pc1 = reinterpret_cast<char *>(&pHashtable1);
pc1 = reinterpret_cast<char *>(&pHashtable1);
pHashtable pHashtable2 = *(reinterpret_cast<pHashtable *>(pc1));
CLIってぼろいな。



288 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 23:37:00.98 ]
マネージドクラスをネイティブクラスでラップしてから配列に入れるとか・・
C++/CLIは異なる言語が同居する2世代住宅言語だからなぁ。
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
 void Say() { Console::WriteLine("Hello World !"); }
};
struct Bar {
 auto_gcroot<Foo^> foo; 
 Bar() : foo(gcnew Foo()) {}
};
int main(array<String^>^ args) {
 Bar bs[] = { Bar(), Bar(), Bar() };
 for (int i=0; i<3; i++) bs[i].foo->Say();
}


289 名前:デフォルトの名無しさん mailto:sage [2011/05/28(土) 06:57:48.67 ]
もうちょっと改良
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
 void Say() { Console::WriteLine("Hello World !"); }
 Foo() { Console::WriteLine("Foo Created"); }
 ~Foo() { Console::WriteLine("Foo Deleted"); }
};
typedef auto_gcroot<Foo^> foo;
int main(array<String^>^ args) {
 foo ag[] = { gcnew Foo(), gcnew Foo(), gcnew Foo() };
 for (int i=0; i<3; i++) ag[i]->Say();
}


290 名前:276 mailto:sage [2011/05/28(土) 08:14:55.34 ]
すいませんが再度質問さしていただきます
C++で
class Foo{
--色々なメソッドやメンバ--
}
である別のクラスのメソッドで
void Piyo(Foo **hoge);というのがあり
渡す値がFoo* fooとして
Piyo(&foo);とするとします。
これをCLIで実現するにはどのようにすればよいでしょうか
どなたかご教示ください。

291 名前:デフォルトの名無しさん mailto:sage [2011/05/29(日) 00:06:15.74 ]
質問の意図が良く分からないけど、こんな感じの回答でいい?
using namespace System;
ref class Foo {};
void Piyo(Foo^ %hoge) {
  hoge = gcnew Foo();
}
int main(){
  Foo^ f = nullptr;
  Piyo(f);
  Console::WriteLine(f);
  Foo f2;
  Piyo(%f2);
  Console::WriteLine(%f2);
}


292 名前:デフォルトの名無しさん mailto:sage [2011/05/30(月) 12:26:48.80 ]
.NET的には単にreturnで返すのが普通
どうしても参照渡しでやりたいなら
void Piyo([System::Runtime::InteropServices::OutAttribute]Foo^ %hoge)
こう書くのが.NET的には正解
クラスライブラリ作ってるんでなければ好きにすればいいけど

293 名前:276 mailto:sage [2011/06/01(水) 06:53:05.38 ]
ありがとうございました。
たいへん参考になりました。

294 名前:デフォルトの名無しさん mailto:sage [2011/06/01(水) 07:08:44.99 ]
教えてほしいんですが。
C,C++なら
typedef union
{
int a;
short b;
double d;
}Union;
としたらUnionのサイズはsizeof(double)で
Union u = 1;としたら、aに1が入ると思うんですが。
CLIで
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(?)]int a;
[FieldOffset(?)]short b;
[FieldOffset(?)]double d;
};
と宣言したとして、?の部分には何の数値を入れればよいのでしょうか。
ヘルプを見ると「フィールドの物理的な位置を示します。」
と書かれているのですが、馬鹿なんでわかりません。
どなたか教えてください。



295 名前:デフォルトの名無しさん mailto:sage [2011/06/01(水) 21:57:49.20 ]
C++/CLIにおけるジェネリックメソッドとテンプレート関数の違いを説明してくださいお願いします

296 名前:デフォルトの名無しさん mailto:sage [2011/06/03(金) 21:20:40.48 ]
>>294
全部0
>>>295
テンプレートはただの言葉遊び
ジェネリックは実行時に展開される
DLLを作る場合、アセンブリのパブリックメンバにテンプレートを使ってはいけない

297 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 14:38:11.46 ]
DirextXXinputのXInputGetState関数実行の格納先構造体

struct CONTROLER_STATE
{
XINPUT_STATE lastState;
XINPUT_STATE state;
DWORD dwResult;
bool bLockVibration;
XINPUT_VIBRATION vibration;
};

をC#で受け取れるようにするにはどうすればいいんですか?
ラップというのはどういう流れになるんですか?C++/CLIの本2冊読んだんですが解説コードからちょっとでも違うと全くわからないです
今のところの認識は、
structをそのままrefクラスに入れる>エラー大量
structの前にrefをつける>エラー大量
structから一つ一つ値を完全にC++/CLIで作った構造体に抜き出し、その構造体をC#から読み込む>これなら当然できる
ラップするとはどういうことなんでしょうか



298 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 15:04:33.10 ]
本二冊読んでvalue classが出てこないってありえるのか…?

299 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 15:58:05.32 ]
どういうことですか?structの前にvalueをつけたら混合型はサポートされていませんというエラーがでます

300 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 17:21:15.05 ]
そりゃ、ref や value をつけたら C++/CLI の管理だからな
通常の C++ のポインタとか持ってちゃ、混合型になるだろ

301 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 17:47:19.16 ]
>>297
> structから一つ一つ値を完全にC++/CLIで作った構造体に抜き出し、その構造体をC#から読み込む
もちろんこれ
単純に書くだけなら直接C#でも大して手間の差はない

302 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 18:50:06.15 ]
まじですか・・・
何かものすごい事を期待していました・・・

303 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 19:05:39.17 ]
ってC++CLI使わなくても直接C#からXinput呼べるんですか?
どうやるんですか?

304 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 19:19:52.39 ]
PInvoke で渡す構造体はC#側で用意してあげればいい

305 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 20:30:56.92 ]
ありがとうございます
意味が全く分かりませんがPInvokeを調べてみます

306 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 20:31:25.24 ]
XInputだったらXNA使えよ

307 名前:294 mailto:sage [2011/06/05(日) 04:08:13.35 ]
>>296さん
ありがとうございました。



308 名前:294 mailto:sage [2011/06/07(火) 07:00:08.28 ]
再度質問さしていただきます
struct Hoge
{
union
{
DWORD dwGBitMask;
DWORD dwUBitMask;
DWORD dwZBitMask;
DWORD dwBumpDvBitMask;
struct
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
} MultiSampleCaps;
};

ref struct Hoge
{
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(0)]DWORD dwGBitMask;
[FieldOffset(0)]DWORD dwUBitMask;
[FieldOffset(0)]DWORD dwZBitMask;
[FieldOffset(0)]DWORD dwBumpDvBitMask;
とまでしたのですが、
struct MultiSampleCaps
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
}
の部分はどのように書けば良いのでしょうか、すいませんが教えてください。

309 名前:デフォルトの名無しさん mailto:sage [2011/06/07(火) 13:08:48.20 ]
C++/CLIでわざわざマネージ型をP/Invokeに使う意味がわからん。
しかもよりによってなぜ今時DirectDrawなのか。
[StructLayout(LayoutKind::Sequential)]struct MultiSampleCaps { ここは同じでオフセットも不要 }
/*Hogeの中*/[FieldOffset(4)]MultiSampleCaps MultiSampleCaps;
.NET関連で調べ物するときのキーワードはC++/CLIじゃなくてC#ね。
情報量1000倍だから。アホらしいと思ったらC#へどうぞ。

310 名前:デフォルトの名無しさん mailto:sage [2011/06/08(水) 20:55:56.86 ]
VC++6.0のMFCなプログラムとVC++2008 Express Edition の.NETなプログラムで
プロセス間通信したいのですがどうすればいいですか。


311 名前:デフォルトの名無しさん mailto:sage [2011/06/08(水) 22:03:55.29 ]
WM_COPYDATAとか手軽でいいんじゃないか

312 名前:デフォルトの名無しさん mailto:sage [2011/06/08(水) 22:35:11.37 ]
もしくは共有メモリ。DDEでも動くぜ。

313 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:29:30.29 ]
Graphicsをつかって1ドット書きたいのですが方法在りますか?
g->DarwLineだと2ドット最小?

314 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 06:08:56.94 ]
FillRectangle

315 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 11:33:33.87 ]
g->FillRectangle(Brushes::White, 0, 0, 1, 1);
できた!

これからc++/cliするのとc#するのどっちがいいですか?
GPGPU & direct Xやるとしたらc++の方向のほうがいい?

316 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 11:48:19.12 ]
C++かC#の2択、C++/CLIは無い

317 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 12:42:08.36 ]
ありがと、c++でいく



318 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 13:44:22.22 ]
GPGPUやDirectXならC++のみじゃね?
C#だとラッパー使うことになるし

まぁ、C++/CLIだけは無いけど

319 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 10:09:33.25 ]
C++/CLIを使おうとした初心者を思いとどまらせるスレになってるな

320 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 10:20:17.40 ]
進む先が地獄であることを知らない奴を追い返してやるのは当然だろう

321 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 10:50:11.25 ]
何も知らないでVisualC++使ってWindowsアプリを作ろうと思うと、
自動的にC++/CLIになるからなー

MSは鬼や

322 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 00:13:45.93 ]
.NET FrameworkとC++を知ってればどうって事無い

323 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 00:20:14.62 ]
333

324 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 06:58:51.76 ]
C++だけよりは、UI作るのは楽。

325 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 14:45:59.69 ]
C++だとUI作り辛いし、C#だとネイティブじゃないから、
C++/CLIを使えば良いんじゃね?

326 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 14:52:10.85 ]
こうしてC++/CLIを勘違いした犠牲がまたひとり・・・

327 名前:325 mailto:sage [2011/06/24(金) 15:04:02.96 ]
と、思っていた時期が俺にもありましたってだけ
MSは頑張って理想通り完成させてくれよう
むしろ諦めたっぽいがw



328 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 23:04:13.78 ]
正直、むしろ起動速度や処理の即応性とかの GUI こそ C++ でやって、ロジックとかに
.net fw を使うための言語だと思うんだが

329 名前:デフォルトの名無しさん mailto:sage [2011/06/26(日) 11:43:42.77 ]
C++とC#を使いこなしたうえで両方を使うために
C++/CLIというならいいけど、両者の利点を
生かすためにいきなりこれ、というのは無理w

330 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 09:26:00.43 ]
>>328
起動速度や応答性を気にしないなら、C#で十分ってことだな

331 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 10:22:03.55 ]
いや起動速度はC#と変わらないよ
ネイティブのDLLを読み込む分遅くなることはあっても速くなることはない
それからアンマネージコードとマネージコードの境界を越えるオーバーヘッドは馬鹿にならないので
下手するとマネージコードだけの方が速い

332 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 10:36:48.76 ]
さらにC++/CLIの存在価値が下がったw
本当にラッパー専用言語だな

333 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 12:13:07.27 ]
C++にGCを入れろと言う要望への、一つの回答。
D言語も悪いところも見えてくる。

334 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 15:06:24.73 ]
ラッパーなら別にネイティブでいいんだよなぁ

335 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 17:47:56.62 ]
C++/CLIがなかったら
どうやってラップするの?

336 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 18:01:37.46 ]
C#-->C++は簡単だけど、逆は面倒。

337 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 18:03:44.31 ]
別にスタティックライブラリだろうがC++ライブラリだろうが
なんでもかんでもDLLに包んでP/Invokeでおk

ObjCコンパイラ以上の荒業でラッパーコードが書けるのがC++/CLIの醍醐味だけど
なんか、こう、便利とは違うんだよなあ…



338 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 18:05:53.91 ]
マネージドで、ポインタを使いまくれる。

339 名前:デフォルトの名無しさん mailto:sage [2011/06/27(月) 19:58:57.49 ]
C#でできなくてC++/CLIでなら可能なポインタ関係の操作ってあったっけ?
C#のunsafeの方が簡潔にCっぽく書けて扱いやすい気がするんだが

340 名前:デフォルトの名無しさん mailto:sage [2011/06/28(火) 09:14:21.36 ]
C#はMarshal派

C++のUIだけC++/CLIやC#みたいに自動で作ってくれるC++は無い物か
BCBなら出来るけどさ

341 名前:デフォルトの名無しさん mailto:sage [2011/06/28(火) 21:35:58.12 ]
BCBでやれば万事解決

342 名前:デフォルトの名無しさん mailto:sage [2011/06/29(水) 14:14:27.30 ]
MSからBCB出してくんねーかな
C++/CLIは無かったことにして、買収しちゃえばそれで済むのに

343 名前:デフォルトの名無しさん mailto:sage [2011/06/29(水) 23:59:08.75 ]
だからC++/CLIは「WinFormsが使えるC++」なんて生易しいものじゃないと何度言えば

344 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 07:08:43.64 ]
Windowsは、C++でプログラミングが基本。

345 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 08:58:03.95 ]
なぜC++は易しいのにC++/CLIは易しくないのか?
みたいな無神経な言い回しが何度も言われていた時期があった。

聞くほうも同じくらい無神経だから何度言っても通じないことは容易に想像できる。

346 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 09:30:47.84 ]
まあネイティブのC++でGUI作るよりはずっと簡単だけど
C++/CLIでWinForms使うなっていうのは
どうせC#わからないと使えないしC++の経験があってもC#覚えたほうが早いからC#やれってこと
C++の経験があるからC++/CLIがいいだろうと思って始めた初心者が
C#のTIPSサイトですぐ出てくるようなコントロールの使い方を質問してくるとそりゃC#やれと言いたくなる

347 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 09:58:07.10 ]
>>344
Windowsでの基本はC++だが、
WinFormでの基本はC++じゃない件



348 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 16:10:30.57 ]
せめてVB並みのインテリセンスを実装してくれ

349 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 16:29:27.88 ]
2010にインテリセンスのらないの確定か
vNextも最初のバージョンは載らないらしいし






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<122KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef