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

このエントリーをはてなブックマークに追加
942デフォルトの名無しさん:2007/03/06(火) 05:10:37
それより VisualStudio 2005 の重さに閉口する
943デフォルトの名無しさん:2007/03/07(水) 10:45:40
>>942
あなたのPCにメモリが足りてないか、あなたにカルシウムが足りていない。
944デフォルトの名無しさん:2007/03/09(金) 14:00:17
Eclipseの方が重くね?
945デフォルトの名無しさん:2007/03/11(日) 23:53:43
notepad.exeより軽くなったら使ってやってもいい。
946デフォルトの名無しさん:2007/03/12(月) 00:16:20
つまりnotepadをくそ重くすればいいんだな。
947デフォルトの名無しさん:2007/03/12(月) 20:49:02
腕の良い呪術師を探せばあっという間だな。
948デフォルトの名無しさん:2007/03/13(火) 18:43:00
C++/CLIはC++より速いの?
949デフォルトの名無しさん:2007/03/13(火) 19:14:52
書き手による
950デフォルトの名無しさん:2007/03/13(火) 19:33:53
どういう書き手ならC++/CLIがC++より速いの?
どういう書き手ならC++がC++/CLIより速いの?
951デフォルトの名無しさん:2007/03/13(火) 23:04:04
無能であるかそうでないか
952デフォルトの名無しさん:2007/03/13(火) 23:15:56
100% C++の文法で書いたソースを /clrでコンパイルしたものを
C++/CLIと呼ぶかどうかという問題はある。
953デフォルトの名無しさん:2007/03/14(水) 10:07:33
いまいちわかんないんだけどさ、C++/CLIって中間コードへコンパイルするんじゃないよね?
インテルやAMDのネイティブなアセンブラになるんだよね?
954デフォルトの名無しさん:2007/03/14(水) 10:17:02
オプションによる
955デフォルトの名無しさん:2007/03/14(水) 11:09:22
>954
どういうオプションでなる? 詳しい説明がある所のポインタを教えてもらえるとありがたい。
956デフォルトの名無しさん:2007/03/14(水) 21:17:03
>>955
/clr あとはMSDNかGoogleで 
957デフォルトの名無しさん:2007/03/14(水) 22:06:42
C++/CLI そのものはただの言語なのでどうコンパイルするかはコンパイラ次第なのだが
と使い古された半畳
958デフォルトの名無しさん:2007/03/15(木) 00:09:19
C++/CLI のコンパイラっていくつあるの?
959デフォルトの名無しさん:2007/03/15(木) 00:22:20
Visual C++ 2005とたぶんVisual Studio Orcas CTP
960デフォルトの名無しさん:2007/03/18(日) 17:11:20
doubleがNaNかどうかを判定する方法を教えてください
961デフォルトの名無しさん:2007/03/18(日) 17:21:01
Double::IsNaN メソッド
962デフォルトの名無しさん:2007/03/29(木) 22:15:49
すいません、これコンパイル通らないんですが仕様ですか?

public ref class Test1
{
  array<String^>^ strs;
public:
  Test1(array<String^>^ strs) : strs(strs){;}
};

public ref class Test2 : public Test1
{
public:
  Test2(void) : Test1(gcnew array<String^>{"test1", "test2"}){;} //←ここで引っかかる模様
};
963デフォルトの名無しさん:2007/03/30(金) 09:28:45
>>962
確かに通らないね。文法上の制約なのか、コンパイラの制約なのかはわかんね。
964962:2007/04/04(水) 17:18:38
ありがとう。
で、今日はこれコンパイル通らんかった。
初期化子の数が多すぎるそうです。
何でも一度に書くなということでしょうかね。


public ref class Test1
{
public:
  Test1(void){;}
  Test1(array<Test1^>^ tests){;}
};

///////////////////////////////////


array<Test1^>^ test1 = gcnew array<Test1^>{
 gcnew Test1(),
 gcnew Test1(),
 gcnew Test1(gcnew array<Test1^>{
  gcnew Test1(),
  gcnew Test1()
 })
};
965デフォルトの名無しさん:2007/04/04(水) 17:53:00
#include <stdio.h>

void change(int *a,int *b);

int main(void){
int a=5,b=3;
change(&a,&b);
printf("%d,%d",a,b);
return 0;
}

void change(int *a,int *b){
int c;
c=a;
a=b;
b=c;
}

aとbを入れ替えるchangeを作りたかったんですがこれだとうまくいきません
どこを直せばいいですかね?
966デフォルトの名無しさん:2007/04/04(水) 17:59:46
#include <stdio.h>
#include <algorithm>

void change(int *a,int *b);

int main(void) {
  int a=5, b=3;
  change(&a, &b);
  printf("%d, %d", a, b);
  return 0;
}

void change(int *a,int *b) {
  std::swap(*a, *b);
}
まあ細かいことは気にしない。
967デフォルトの名無しさん:2007/04/04(水) 18:10:07
まあ、なんだ。ポインタを入れ替えてどうする、と。
ていうかcに代入する時点でエラーか警告出てない?
968デフォルトの名無しさん:2007/04/04(水) 18:29:46
ん〜・・・
よくわからねーんですが

int *a
この *aはINT型でなくINTのポインタ型
aがINT型
&aがアドレス型?
なんですかね・・・

c=aとしちゃうと、INT型とINTのポインタ型は違う型だから代入できないってことなんでしょうか^^;
969デフォルトの名無しさん:2007/04/04(水) 18:35:13
void change(int *a, int *b) {
  int c;
  c = *a;
  *a = *b;
  *b = c;
}
次からはただのCのスレ行けよ。
970デフォルトの名無しさん:2007/04/07(土) 21:06:44
実践C++/CLI(中 博俊)を読んでC++/CLIを読んでるけども、
文法はある程度分かっても、クラスライブラリがどうなってるかが全く分からない。
例えば、文字列を表示するにはどれを使えばいいかとか....
MSDNライブラリは大量の項目で羅列してるけど、「〜をしたい場合には〜を使う」みたいな使い方はサポートしていない希ガス。
どうやって勉強すれば良いんだろうか.......
971デフォルトの名無しさん:2007/04/07(土) 21:28:41
ライブラリはとにかく使ってみて、どれがどういう場合に最適か覚えるしかないだろ
経験がないことには話にならん
972デフォルトの名無しさん:2007/04/07(土) 21:34:43
>>970
適当にググるなど
973デフォルトの名無しさん:2007/04/07(土) 23:04:37
>>971-972
分かりますた。
STLの悪夢を思いだしながらググりまつ。
974デフォルトの名無しさん:2007/04/08(日) 00:22:54
その際にはC#やVB.NETのコードを読めると吉。
975デフォルトの名無しさん:2007/04/08(日) 01:47:21
>>970
参考になるかも。

Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.aspx

ランタイム ルーチンおよび同等の .NET Framework 関数
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/vclrfrun-timeroutinesnetframeworkequivalents.asp
976デフォルトの名無しさん:2007/04/09(月) 15:23:29
質問です。

ttp://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_02.html
の通りに、関数をラッパするクラスを作って、ネイティブ関数をmanagedな言語
から呼び出すとき、

*.lib (ネイティブ関数ライブラリ)
から
*.dll (managedライブラリ)
を生成する際に
hello.lib(hello.obj) : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます。
という警告が出ます。

一応、警告を気にせずに実行すれば動作はするのですが、
イマイチ気分的にすっきりしません。
なぜ警告が出るのかわかる方いますか?

ちなみに環境はWinXP + Visual Studio 2005です。
977976:2007/04/09(月) 15:41:22
追記:
関数のラップクラス(hellolib)では、リンカのインクリメンタルオプションは
/INCREMENTAL
で有効になっています。
また、ネイティブ関数のライブラリ(hello)では、そもそもプロジェクトの
プロパティページにリンカの設定をする項目がありませんでした。

警告で出ている/EDITANDCONTINUEは、プロジェクトのプロパティ
からどこか探したのですが、どこにあるか発見できませんでした。
978デフォルトの名無しさん:2007/04/12(木) 13:04:00
C++CLIの存在意義はなんなんだろう?
釣りじゃなくってホントそうおもう

C#じゃだめなの?
979デフォルトの名無しさん:2007/04/12(木) 14:20:49
980デフォルトの名無しさん:2007/04/12(木) 16:29:32
>>978
Java厨を引き込むためのJ#
ブヴィ厨を引き込むのためのVB.NET
ぷらぷら厨を引き込むのためのMC++, C++/CLI
981デフォルトの名無しさん:2007/04/12(木) 21:09:27
>>978
ネイティブとマネージドの世界の橋渡しにはいいと思う。
C#でのinteropと違って、C/C++に用意されたヘッダファイルがそのまま使える。
982デフォルトの名無しさん:2007/04/17(火) 05:34:22
そろそろ結論を言おうか?
ネイティブ吐けるC#こそ最強!
あったらの話だけどね。
C++/CLIはちと難しすぎるというかややこしいんだよね。
というのもC++から入ってから.NETに行くことになるから。
やっぱ.NETから入ってネイティブという流れで学べる環境じゃないと広がらないと思うんだ。
だからこそネイティブ対応のC#を切望しているわけ。
いまのところC++やっている人はC++/CLIやってくれたらいい。
VB/JAVAやっている人はぜひC#はじめてみてほしい。
初心者はもちC#!
ネイティブC#かぁ〜、ホント楽しみだね。
983デフォルトの名無しさん:2007/04/17(火) 06:22:35
朝から妄想オナニー?それとも込みか?縦ではなさそうだし最近のは難しいな。
984デフォルトの名無しさん:2007/04/17(火) 08:54:03
いいかい、同じ.NET対応言語でもC#やVBは初心者にも門戸を開いている。
というよりかはC++が上級プログラマのための言語であるからして、
必然的に、それ以外のプログラマのための言語がC#でありVBだといえなくもない。
とにかくだ。
問題はC++/CLIがC#やVBどころか、C++よりも敷居の高い言語だということなんだ。
このギャップはいったいなんなんだとういう話さ。
わかったかい?
985デフォルトの名無しさん:2007/04/17(火) 08:55:14
C++よりも敷居が高いなんて.NET対応言語としてあるまじきことではないか!?
986デフォルトの名無しさん:2007/04/17(火) 10:34:28
既存のC/C++ヘッダーとlibファイルを引っ張ってきてマネージモジュールを
書けるC#があったら、それがC++/CLIってだけの話かと。

987デフォルトの名無しさん:2007/04/17(火) 17:01:50
>>982>>984
言いたいことはわからなくもないが、
残念ながらそれを書くべき場所としてここは相応しくない。
せめて.NET FrameworkのスレとかC#のスレとかでだったら共感できるのに。
988デフォルトの名無しさん:2007/04/21(土) 19:13:29
お願いします。

動的に追加したContextMenuStripのメニューアイテムのすべてを
同じイベントハンドらに設定した場合、そのイベントハンドら内で
どのメニューアイテムが選択されたのかを知る一般的な方法って
あるのでしょうか?

いろいろやって見ましたが、なんかうまくいきません。
989デフォルトの名無しさん:2007/04/21(土) 19:22:08
最初に渡ってくるオブジェクトを調べれば?
990988:2007/04/21(土) 21:43:03
>989
最初にわたってくるオブジェクトとはイベントハンドらの第一引数の
ことでしょうか?

それはthis(メインのフォーム)になっているので、これを
変えればいいのでしょうか?

しかしEventHandlerを作ったときの第一引数にToolStripItem^を
渡すとコンパイルエラーerror C3754になってしまいます。
991988
すいません。ぼけてました。
いま調べてみたら第一引数は、ToolStripMenuItem^になってました。