managed C++ やろうぜ!!
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGmanagedC++のスレが無いじゃないか。
折角.NETに生き残ったC++、みんなで語ろうぜ。
0002デフォルトの名無しさん
NGNG語ろう
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG{
System.out.println("○○○");
}
の「1から9まで同一人物だったら」
の部分って
1==2&&1==3&&....
って書くのは長ったらしいので
何かいい方法ありますか?
0011デフォルトの名無しさん
NGNGと言う事はSTLもとおると言う事か・・・?
素晴らしい!!
0012デフォルトの名無しさん
NGNGclass CA{
public:
template<typename T>void func(T t);
};
template<typename T>void CA::func(T t){.......}
がエラーになるのは解決されたのだろうか??
0013デフォルトの名無しさん
NGNG今試したら、ちゃんと動きましたよ。
0014デフォルトの名無しさん
NGNGさようなら、cout・・・・
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG普通のSDKと.NETのSDKは
C++の扱いは違うの?
.NETのC++はあくまでmanagedコードを
書くためのものなのかな?
0017デフォルトの名無しさん
NGNGaged=ageの過去形
0018デフォルトの名無しさん
NGNGネタだよな・・・?
0019デフォルトの名無しさん
NGNGマグドナルドの経営する中華風ファーストフード店の名称です。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG本当だ......。よくみるとVS.NETのほうにしかiostrem.hはないですね。
まあ私はVS.NET買うつもりなので関係ないけど。
0023デフォルトの名無しさん
NGNGそれにマトモなSTL入れておけば問題ないだろ。
0024デフォルトの名無しさん
NGNGどゆいみ?
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG!(a^b || a^c || ... )
がベストに近いかな?
少なくとも&&使うよりは良いと思われ。
002922
NGNG純粋に.net SDKを入れただけで本当にiostream.hがインストール
されるかどうかはわからなかったです。
ちなみにC:\Program Files\Microsoft.NET\FrameworkSDK\includeには
なかったです.......。
0030デフォルトの名無しさん
NGNG適当なコンテナに突っ込んでfor_eachで比較
0031デフォルトの名無しさん
NGNGfor_each()じゃなくて、find_if()だろ
0032デフォルトの名無しさん
NGNGとすれば、
mann(){
CA* pca=new CA;
}
delete pca;を書かなくても、
ガベージコレクションがオブジェクトを壊してくれる。
便利になったなぁ・・・。
0033デフォルトの名無しさん
NGNGmann()ってなに?ネタだよな・・・?
0034デフォルトの名無しさん
NGNG.NETでも今までと同じC++が書けます。
managedコードを吐かせたくなければ、コマンドのcl/CLR
からCLRを外して、ソースからmanagedC++固有の書式を除けば
可能です。多分。
0035ぎゃあああああ
NGNG0036デフォルトの名無しさん
NGNGAttributeとATLで作った方が楽だぞ。
0037ぎゃあああああ
NGNG.NET frameworkを使えるATLの環境がほしい…。
0038デフォルトの名無しさん
NGNG出来ないんだろうなぁ。
0039デフォルトの名無しさん
NGNG移植です。それしかありません。
0040デフォルトの名無しさん
NGNGベータ2ってインストール時にパスを通すとか言ってなかったか?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG練習あるべし。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGそうなんですか?
fatal error C1107: アセンブリ 'System.WinForms.dll' がみつかりませ
んでした : /AI または LIBPATH 環境変数を使用してアセンブリ検索パスを指定してくだ
さい。
と、出るんですが。'System.WinForms.dll' ってassemblyと言うフォルダの中に
あるんですけど・・・。
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG・・・頑張ってみるよ
0048デフォルトの名無しさん
NGNG'System.WinForms.dll' ということは、相当古いバージョンだね。
0049デフォルトの名無しさん
NGNGSystem.WinForms.dllはBeta2でSystem.Windows.Forms.dllに変わりました。
0050デフォルトの名無しさん
NGNGそのDLLはありました。assemblyフォルダじゃなくて.NETの方に。
Microsoft.Win32.Interop.dllも名前が変わっているのですか??
0052デフォルトの名無しさん
NGNGもう根性でもどうにもできないな。
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGてことはJAVAかな?
0057デフォルトの名無しさん
NGNG旧バージョンをアンインストールせずに新しいやつ入れたんでしょ。
0058デフォルトの名無しさん
NGNG005956
NGNGスマソ
0060デフォルトの名無しさん
NGNG但し、インストールとアンインストールを計6回ぐらいしましたが・・・
0061デフォルトの名無しさん
NGNGOSから再インストールしやがれ。
0062デフォルトの名無しさん
NGNG日本語ページでは見付かりません。
(managed C++の情報って何処にあるんだ? )
0063デフォルトの名無しさん
NGNG#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デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGJAVAとC++と同じぐらい違います。
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGだからmanaged C++は私には絶好の言語なのです。ガベコレがあるなんて
最高としか思えない。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG本とか全然ないしさ、みんなどうやって勉強してるの?
0072デフォルトの名無しさん
NGNGない。GC対象になるのは__gcなクラスだけ。
>>71
RTMのドキュメント。
0073デフォルトの名無しさん
NGNG使えるなら、managed C++に乗り換えるけど。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGgcroot
0076デフォルトの名無しさん
NGNGYou can use it
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG10年は喰えそうな気がするのだが、
俺の気のせいだろうか・・・・?
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGっていうか、cl.exeはネイティブコードもILも両方吐けます。
0081デフォルトの名無しさん
NGNG何故だぁ!!
0082デフォルトの名無しさん
NGNGネイティブっつーても、
.NET frameworkは必要。
誤解する人も出るので
言い方改めた方がよい。
0083デフォルトの名無しさん
NGNGそれを言ったら、いまのプログラムも Win32 API は必要だし。(GDI32.DLL とかさ)
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG死滅しました
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG.net でもヘッダファイルには残ってるが。従来の WTL の機能も一部取り込んで、
発展はしてる。(メインストリームではないと思うが)
0088デフォルトの名無しさん
NGNGはぁ。誤解しているのはあんたです。cl.exeはx86ネイティブ吐けます。ILを吐くのは/clrのときだけ。
>>85-87
ATL7使ってみなって。ある意味C++/ATLユーザーは.NET Frameworkなんかいらないってことがわかるから。
ATLはまだまだメインストリーム。
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG82じゃないけどおれも誤解してたかも。
managed C++はCLR(.NET)を使うために作られたものだと思ってたけど、
CLRと全く関係無しに managed C++を使うものなの?
0093デフォルトの名無しさん
NGNGmanaged extension for C++はC++の構文で、CLR向けのコードを書くための拡張機能。
Visual C++ .NETは、通常のC++以外に、managed extension*も*サポートするC++コンパイラ。
>CLRと全く関係無しに managed C++を使うものなの?
CLRと関係なしに「C++を」使うことができる。
CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
OK?
009492
NGNG>>CLRと全く関係無しに managed C++を使うものなの?
>CLRと関係なしに「C++を」使うことができる。
>CLRと関係しまくりの「managed extensionをC++とともに」使うこともできる。
CLRを使わずに、「managed extensionをC++とともに」使うことはありえないですよね?
いや、83さんがx86ネイティブを非/clr時に吐けると書いているけど、
ここはmanaged C++スレなので、managedをCLR非利用時に使うことが
ありえるのか?と疑問に感じましたので。
0095デフォルトの名無しさん
NGNGだから、94は、ポインタとポインタのポインタの説明って事さ。
009695
NGNG0097デフォルトの名無しさん
NGNGなるほど。僕としては、
「managedをCLR非利用時に使うことがありえるのか?」
っていう文章が文章として成り立っていない(managedっていう言葉はCLRと同義語だから)ので、??と思ったのでした。
あ、ちなみに83==93==thisってことで。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGC++プログラマーの長年の夢は叶えられた。
0100100!
NGNG0101デフォルトの名無しさん
NGNGならD使え
0102デフォルトの名無しさん
NGNGしかし101は無視された!
しかし101は無視された!
010399
NGNG確かにC++に最も近いだろうが、「何処でも動く」
わけじゃないからなぁ。
0104デフォルトの名無しさん
NGNGmanagedとか言ってる時点で駄目だろ
0105デフォルトの名無しさん
NGNG言葉の定義はどうでもよくて実際が大事。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG微妙なずれを感知。
0108デフォルトの名無しさん
NGNGやるきのあるコミュニティのある所。
0109デフォルトの名無しさん
NGNG君は、何屋さんかな?
C++プログラマは要らないと思ってるんだよ。
今まで、ずっとJavaにコンプレックス持ってて、
「でもこっちにはテンプレートがあるんだい」とか言って田?
0110デフォルトの名無しさん
NGNGガ━━(゚Д゚;)━━ン!
0111デフォルトの名無しさん
NGNG明らかなズレを感知。
0112デフォルトの名無しさん
NGNGその通りです。
JAVAのバカヤロー!!
0113109
NGNG誤:C++プログラマは要らないと思ってるんだよ。
正:C++プログラマはGCなんか要らないと思ってるんだよ。何にしても、煽り入ってたね。ごめーん。
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNGろくにメモリの管理もできないような厨房大量発生の予感。
0116デフォルトの名無しさん
NGNGもし付いたらパフォーマンス最優先なOOPLがなくなってしまう。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG>>The best garbage collecting language that I know of is C++ with a garbage collector.
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGクラス単位で選択可能にすれば良いだけだと思うが。
0122デフォルトの名無しさん
NGNGなにがいいんだ?
それでGCが走るタイミングを制御できんのか?
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGおお・・・Stroustrupがそんなことを言っていたなんて(福音)
その下のは何?宗教の勧誘か??
0125デフォルトの名無しさん
NGNG「GC付きのもっともよい言語は、私の知る限り、GC付きのC++です」
意味わかりません。これマネジドのこと?そんなこと教祖が言ったの?
信じらんない。ソース希望。
0126デフォルトの名無しさん
NGNGGC の制御を細かく出来ないと 速度がクリティカルな環境じゃ使えない。
なんとかならないのかな? .NET の GC は。
0127デフォルトの名無しさん
NGNGクリティカルな部分は自分で管理するとかして、
gcの起動を抑制すればいいんじゃない?
0128デフォルトの名無しさん
NGNG訳さんでもいいわい。
ttp://www.csl.mtu.edu/cs5311/www/quote.html
0129デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1010852722/620
0130デフォルトの名無しさん
NGNG>Pablo Picasso
>Computers are useless. They can only give you answers.
が(・∀・)カコイイ!!
0131デフォルトの名無しさん
NGNGVS.NETにはオプションでありそうな気がするんだが。
0132デフォルトの名無しさん
NGNGあとGCが起動するスレッドをどれにするかとか、制御できるよ。
でも、VS.NETのオプションとかいってるところを見ると、アンタGCわかってないね。
開発環境と関係あるわけがない。
0133興味本位
NGNGmanaged C++ソースコードの標準的な拡張子って.cppのままなんですか?
managed G++が出ないかなあ…(CLRが先か)
0134デフォルトの名無しさん
NGNGそう。
0135興味本位
NGNG構文的にはC++にCLRを使うための機能を追加しただけだから.cppでいいのか。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG++c++;
は
c==3ですか?
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGx = ++c++;
cout << "x = " << x << " : c = " << c <<endl;
// x = 2 : c = 3 かな
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG.NET的なクラス/インスタンス管理を自動でやってもらえるのは嬉しい。
MC++のコードでmanagedな部分がメインになることは少ないと思うなあ・・
0149デフォルトの名無しさん
NGNG「古い形式で書かれていますがビルドしますか?」
みたいな内容のダイアログが出てくる時点で
プチ・リストラ気分>VC++ユーザーの俺
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGよって晒し!
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNGですか?
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGちょい違う。
if( (C++ * 10) > ( ( Ruby * 8 ) || ( Managed C++ << 3 ) ) )
printf( "MS イッテヨシ" );
0156155
NGNG0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159とあるフリーソフトウェア作家
NGNGmanaged C++ のランタイムを配布するときって、
何と何を一緒に配布すりゃいいんでしょ。はたまたそのサイズはいかほど?
あるいは、MSのどこにリンク張っとけばいいんでしょ。
.NET 買うかどうか悩んでるとこなんですが。
0160デフォルトの名無しさん
NGNGmanagedてなんですか?
0161デフォルトの名無しさん
NGNG.NET上で動くC++か
今までのC++かってことじゃに
managedC++なコードは.NET上でないと動かないよん
0162デフォルトの名無しさん
NGNGdotnetfx.exe(21.6MB)
0163159
NGNGそんなもん、フリーソフトウェアにはつけることはできん。
やっぱふつーにC++使いますわ。
会社で作るときに検討しよう・・・・。
0164デフォルトの名無しさん
NGNGどうせすぐにサービスパックに含まれるって。
0165デフォルトの名無しさん
NGNGそれさぁ、Win95で動かすことはできないんかな?
Win95 で CLR / .net しなきゃならないんだけど。
0166デフォルトの名無しさん
NGNG何それ?
Win95はもうMicrosoftがサポート止めてるのにいまさら出るわけないと思われ
0167デフォルトの名無しさん
NGNG感動した。
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGああああああああぁぁぁぁぁぁ
優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは
気のせいじゃなかったのか・・・・
0170デフォルトの名無しさん
NGNG0171C++歌劇派
NGNGだたらJavaやれ。
>優秀なCプログラマが書いたソースなら、C++のクラスに勝る気がしていたのは
それは君がパーなだけ。それに、最近は、じじいのCプログラマばっかりで、
優秀なのもいない。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGマジな話C++は終わったのか?
ネタだと信じたい。
もし、ビル・ゲイツが10年ぐらいたってC#は実はジョークでしたとか言ったら泣くよ・・・。
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG/ 丶
/ ノ、
/ /ヽ丿彡彡彡彡彡ヽヽ
| 丿 ミ
| 彡 ____ ____ ミ/
ゝ_//| |⌒| |ヽゞ
|tゝ \__/_ \__/ | | ________________
ヽノ /\_/\ |ノ /
ゝ /ヽ───‐ヽ / / C#は実はジョークでした
/|ヽ ヽ──' / < 次はC♭出すので買ってね
/ | \  ̄ / \
/ ヽ ‐-  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGどうもコマンドラインからだとコンパイル成功するのに
エディタからだとdllがらみのエラーが出る。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGC++をmanagedでやる理由もなけりゃmanagedをC++でやる理由も無いからな。
つかC++はキーワードが汚すぎ。
0183デフォルトの名無しさん
NGNGMFCだってあとは現状維持程度で、新しいことがしたければ.NETへ逝け!でしょ?
おれは今のところWindowsは開発対象でないので様子見。
0184180
NGNGhttp://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
を読み込ませる方法はないでしょうか?
0185180
NGNGE:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msobj10.dll
を上の.netSDKのDLLで上書きしたらLNK2023は出なくなりました!
という訳でVS6、.netSDK、PlathomeSDKの三つを上手く組み合わせれば
まだまだ開発はできそうです。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGというかtemplateの制限はどれくらい解けてます?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGそれなりに解けてる
0190180
NGNG%LIB%にパスを設定したけどダメなんですよ。なんでですかね?
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGほう・・・VBが使えるVC・・・訳わからんな。
0194デフォルトの名無しさん
NGNGだよな。
カーネル内の関数をVC++で作成したものだろうがVBで作成したものだろうが呼び出せるのと同じだよな。
0195194
NGNG0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGやだ
0198デフォルトの名無しさん
NGNGC#やれ
0199デフォルトの名無しさん
NGNG質問書けよ。助けて!じゃわからん。
0200デフォルトの名無しさん
NGNGunsafeキーワード使うことで
全てC#でできるんですか?
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGそれはそもそもmanaged c++にはない
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGunsage = age
0206デフォルトの名無しさん
NGNGマネージ コードとアンマネージ コードを混在できるため、
下位レベルのアンマネージ API などに直接アクセスできます。
Visual C++ とマネージ拡張を使用して、最大パフォーマンスの
マネージ API を記述できます。
この辺りしかmanaged C++を使う理由はないな。
C#でも十分パフォーマンスをあげるコーディングの仕方が
用意されてるみたいだし。またx86ネイティブなコードを
書く機会もWindowws上じゃ減るんだろうなぁ。
0207デフォルトの名無しさん
NGNGMC++のメリットって、APIの構造体(またはクラス)を直接使えることぐらいじゃないかな。
APIの引数の型が単純だったら、C#とかでも難なく使えるし。
0208デフォルトの名無しさん
NGNGいいえ。C#は何でもできる言語ではありません。VB.NETでできるのにC#では
できないこともあります。MC++でならできるけど、C#やVB.NETではできない(または限定的)と
いうこともあります。
>>206さんの言うことは一部真だと思いますが、C++ユーザーがC#に進んで混乱するくらいなら
MC++のほうがいいという選択もありえると思います。
0209デフォルトの名無しさん
NGNGちなみにMC++のアンマネージコードの呼び出しはP/Invokeではありません。
P/Invokeよりも数十倍高速な仕組みを利用します。
0211デフォルトの名無しさん
NGNGこの辺りかな?
とにかく高速なラッパーという用途だけはC++に残っているわけね。
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGかなり上位に出てきます。
0216デフォルトの名無しさん
NGNGunmanagedコードを使わないようにがんばろう。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG/clr つければできるよ。一緒に使えないオプションが多くて面倒だけど。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGよく分かったよ。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGVC++に関していえば、
過去の資産を引き継ぐという意味じゃ、
互換性を切り捨てたVBとは役割は全然違う。
10年はなくならない。
それにMC++は多分内部的にかなりC#とコードを
共有してるような気もするから、なくなることは
ないと思う。
あくまで希望的観測だけどどうでしょう?
0226デフォルトの名無しさん
NGNGMC++ -> MSIL -> C#
いいデコンパイラが出れば良い線行くかも。
MC++ -> MSILとC# -> MSILが似ていれば。
0227デフォルトの名無しさん
NGNGFILETIME(WinBase.h)とSystem::Runtime::InteropServices::FILETIME
みたいに名前がかぶっちゃうようか場合はどうしてる?
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG解決しました。どうもです。
0230デフォルトの名無しさん
NGNG・使用するDLLを#pragma comment(lib, "XXX.lib")と指定する。
・使用する.net frameworkのDLLをusing <XXX.dll>と指定する。
とこれだけでいいんでしょうか?
しかもやってて思ったのは::MessageBox関数みたいに#define
切られてるのはどうしようもないような気がしてきました。
System::Windows::Forms::MessageBoxWはありませんとか言われて・・・
0231デフォルトの名無しさん
NGNGdllなのに拡張子libとは?
0232デフォルトの名無しさん
NGNGLINK : fatal error LNK1104: コンパイラは、ファイル 'kernel32.dll' を開くことができません
こうなっちゃうんですよ。
ところでこうやってコンパイルしたプログラムはmanagedってことに
なるんですかねぇ?もちろん全て__nogcという意味でいいのですが。
なんかMC++ってなんなのかよく分りません。
ildasm.exeでもちゃんと見れるからどうなってるのかさっぱりです。
0233デフォルトの名無しさん
NGNG#pragma comment(lib, "kernel32")
これでOKでした。拡張子は入りません。
0234デフォルトの名無しさん
NGNG既存のプログラムをC#で書き直すぐらいなら
MC++を活用した方が全然いいと思うのですが、、、
これでDLLを作ればC#なんかからusing MyLib;
なんて出来ていいと思うのですが。
0235デフォルトの名無しさん
NGNGライブラリの移植用としては上の方で語られているね。
すくなくとも.NET用に開発されたC#がもっとも.NETとの親和性が高い。
0236デフォルトの名無しさん
NGNG個人的にはSun派とMS派のどっちでもないけど、
.netが過去との互換性を重視してる点がいいと思うんですよ。
MC++あっての.net(w
0237デフォルトの名無しさん
NGNG俺は心機一転派なのでC#のパイオニアを目指すw
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG最強だね。それ。
0240デフォルトの名無しさん
NGNG最低でも10年はかかるんだろうなぁ。opensource is always late
なんてAlan Coxさんが言ってたけどまさにそんな感じか、、
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
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これからでそ
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGもちろん。そのための「M」ですから。
0247デフォルトの名無しさん
NGNG/CLRオプションを付けたときはデフォルトでmanagedコードに
なるみたいですが、managedコード=ILという訳ではないんですよね?
どうもGCとmanagedとILの関係が分らんのです。
x86バイナリにコンパイルされたC++managedコードにGCの機能が含まれて
いるっていう組み合わせもありえるんですよね?
0248デフォルトの名無しさん
NGNGC#に負けるな、あげ!
0249デフォルトの名無しさん
NGNG/clrでmanaged codeを吐くよ。managed codeって目に見えるものじゃなくて
概念的なものだと思う。ILであることもmanaged codeの一側面ではあるけど。
__gcのクラスはmanaged dataになる。managed dataとmanaged codeの違いは
意外にみんな理解していないようだ。
x86バイナリのlibをリンクしても、それがmanagedになるわけじゃないよ。
CLRはunmanaged codeを実行することもできるんだよね、これも意外に
知られていないが。
0250デフォルトの名無しさん
NGNG難しいです。なにかよいドキュメントがあればぜひお願いします。
0251デフォルトの名無しさん
NGNGmanaged 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ところがどっこい、C#ではポインタを使うためにunsafeキーワードを
使うと、アンマネージドになってしまうらしい。
C#ではポインタの使えるマネージドコードというのは記述できないのかな?
それとも上のドキュメントの記述が紛らわしいだけなのか、、
0253デフォルトの名無しさん
NGNG綺麗に線引きするには内部の動作を把握してないと無理。
だからみなあいまいな説明しかできない。
0254デフォルトの名無しさん
NGNGアンセーフとアンマネージは違う。アンセーフはマネージコードです。
CLRはマネージコードを実行します。アンマネージコードも一部実行できます。
アンセーフはマネージですから完全にCLRの傘下で実行されます。
0255デフォルトの名無しさん
NGNGマクロを #undef するよろし。
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG厨でrjc
0259デフォルトの名無しさん
NGNGATLで /clr をつければできると思う。
0260デフォルトの名無しさん
NGNGそれしかないんだけど、なんかきたないね
0261デフォルトの名無しさん
NGNG1はどこいった?(ワラ
0262デフォルトの名無しさん
NGNGなるんだけどなんでだろ・・・?
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
*/
0263262
NGNGForm1()
{
// Size s(400, 300);
System::Drawing::Size s(400, 300);
this->Size = s;
}
0264デフォルトの名無しさん
NGNGFormにSizeプロパティがあるのと関係?
0265262
NGNGあ〜、そういうことですか。Fontクラスもだめでした。
this->Size と System::Drawing::Size の判断ができないのか・・・。萎え。ヽ(´Д`)ノ
それはともかく、ありがとうございます。
0266デフォルトの名無しさん
NGNGhttp://www.codeproject.com/managedcpp/
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGSystem::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デフォルトの名無しさん
NGNGms-help://MS.VSCC/MS.MSDNVS.1041/vcmxspec/html/vcmg_MacrosandthePreprocessor.htm
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGリソースからボタン貼り付けてボタンダブルクリックするとMFCクラスウィザードとか出てきますが
MFCでしかウィザードは使用できないのですか?
manageC++ではひたすらコード書き込みですか
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGお前のすぐ上
0274login:Penguin
NGNGっていいたいところなんだけど、
C#の方が便利だし綺麗だ。
これが現実。
0275_
NGNG0276デフォルトの名無しさん
NGNGhttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1638&forum=7
0277_
NGNG0278デフォルトの名無しさん
NGNG何だかなあ...
0279あぼーん
NGNG0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGVC++.NETに付いてるおまけ
0284デフォルトの名無しさん
NGNGありがと。
0285デフォルトの名無しさん
NGNGそれで納得するなよ。(w
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGCLR (゚ロ゚) クルァ!!
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG、ヾ''""ツノ,
ミ ・д・ 彡 <ほっしゅほっしゅ!
"ミ,, , ; ;;::ヾ
"'''''""
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG改めて凄い会社だとおもいます。まる。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGネタもないのに上げるなって言ってるだろ
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGそして300getは君の手に…
0300デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,〜((((((((〜〜、
( _(((((((((_ )
|/ ~^^\)/^^~ヽ|
| _ 《 _ |
(|-(_//_)-(_//_)-|)
| 厶、 |
\ |||||||||||| /
⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ (´⌒(´⌒;;
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG無いのなら上げるな
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG上げるための自作自演uzee
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG少なくとも社内では統一しないと駄目だしな。
結局 C# と VB.NET に移行するだけの予感。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/net/books/ProgVCNET/chapter32.asp
0311デフォルトの名無しさん
NGNG流行ると思うんだがなあ・・・
0312デフォルトの名無しさん
NGNG何のためにソースが必要なのか小一時間問い詰めたい
0313デフォルトの名無しさん
NGNGManagedDXを見てない方がよくおっしゃる。
0314デフォルトの名無しさん
NGNGラッパー以外の部分というのを説明できない方がよくおっしゃる。
0315デフォルトの名無しさん
NGNG見たことないから説明できないんだろ、ほっとけ。
0316デフォルトの名無しさん
NGNG既存のC++のソースコードを(managed C++でラップして)流用するのに
都合が良かったのにな。
わざわざクラスライブラリ化するのは、作るのも取り扱いも面倒で嫌。
本当はmanaged C++だけで自分にとっては必要十分だし(普段はすべてUNIXなので)、
これを使いたいのだけどMSが全く力を入れないから困る。
各種サンプルやVisualStudio.NETでのRADとか。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGildasmをすごくしたやつ(w
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG逆コンパイルしてくれるって知ってる?
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG0324IP記録実験
NGNGhttp://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デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG基礎英語聞かなくっちゃwwwwwwwwwwwwww
0327デフォルトの名無しさん
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042020193/
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGformとかを使いたいとき、C#やVBみたいにツールボックスからドラッグ&ドロップしたいんですけど、
ツールボックス上のアイコンがみんなグレーになってます…。
これってすべてコードだけで記述しないといけないんですか?
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ハライテ- ウェー、ハッハッハ ウェー、ハッハッハ
. ( ´∀`) <ZBsKvw39ってヴァカ? ∧_∧ 〃´⌒ヽ
. ( つ ⊂ ) \_______ (´∀` ,,)、 ( _ ;)
.) ) ) ○ ∧_∧ ,, へ,, へ⊂), _(∨ ∨ )_
(__)_) ⊂ ´⌒つ´∀`)つ (_(__)_丿 し ̄ ̄し
タッテ ラレネーヨ ウェー、ハッハッハ
0332デフォルトの名無しさん
NGNGsscli\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デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 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デフォルトの名無しさん
NGNGhttp://www.yahoo.co.jp/
0336デフォルトの名無しさん
NGNG事が原因の1つとなって潰れたが、いまの2chは「誹謗・中傷・密告お断り」というのを出したのと
同じ事なんだよなあ、、、
0337デフォルトの名無しさん
NGNG今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
0338デフォルトの名無しさん
NGNG今は削除要請板に依頼さえ届けば、本気でまずいのは消してるから問題ないんじゃないの?
0339デフォルトの名無しさん
NGNGどこまでが中傷かどうか判断するのが難しそうっすね、、
>>107
ん?どの書き込みに対してのレスですか?(^_^;)
内容証明が届いて、7日間以内に消さないと、
告訴されても負けちゃう可能性が強いってことになるのかなぁ、、
0340デフォルトの名無しさん
NGNGDAT形式のログ管理だと大変そうだわな。
0341デフォルトの名無しさん
NGNG「2ちゃんねる」管理人
1976年東京生まれ。
1998年に中央大学(心理学専攻)在学中に
合資会社東京アクセスを設立し、
web制作、システム開発、
システム設計等のプランニングの仕事を始める。
1998年の夏に米国アーカンソー州に留学。
1999年5月に「2ちゃんねる」という掲示板サイトを始める。
2001年6月にイレギュラーズアンドパートナーズ株式会社設立。
地域コミュニティーまちBBSやレンタル掲示板JBBSなど、
コミュニティ関連のサービス提供ばかりしている今日このごろです。
東京都北区赤羽北2-31-16-1311
090-9840-9821(電話は訴訟関係のみ)
0342デフォルトの名無しさん
NGNGWindows、Linux、ソフトウェア、で今のところ見かけてる。
0343デフォルトの名無しさん
NGNG俺はマンコとかいてるがIPとられても怖くないぞ。もし文句あってもやめないからな!!
0344デフォルトの名無しさん
NGNGおめでとうございます。
こちらこそ宜しくお願いします。
0345デフォルトの名無しさん
NGNG誰も突っ込んでやらないので急にかわいそうになったんだよ・・
0346デフォルトの名無しさん
NGNGキタ━━━━━(゚∀゚)━━━━━!!!!
0347デフォルトの名無しさん
NGNGうようよいるだろうし
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG内部告発・差別的発言・タメ口・顔文字
ぐらいかな
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG管理人は以前TVでいつでも、譲りたいって言ってたし。
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGで、何でそれをお前が決めるんだ??
0360デフォルトの名無しさん
NGNGモナーが出演決定!!!!!!!!!!!!!!!!!!!!!
<<放送時間>>
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デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG(ただし、公共の利益になる場合はこの限りではないのだけど)
事実誤認のレスで 名誉を毀損された =営業的な不利益が生じた のであれば
確かにレスが事実誤認であることを証明するのは 原告側。
しかし その反証の場が 2ch でなくてはならないというのは ? です。
今や 2ch は管理人の個人サイトとは判断されないほど メディアとしての
認知・影響力が裁判所で認定されているですから
公序良俗に反する情報発信は情報の発信者が責任を負うべきでしょう。
その発信者の情報をわざと特定させないのは
ある意味、確信犯的な共犯者と見なされても仕方ないでしょ。
(もちろん、Internet の匿名性 については十分、議論の余地はあります。)
0364デフォルトの名無しさん
NGNG0365山崎渉
NGNG0366デフォルトの名無しさん
NGNGフォンドボー?
0367山崎渉
NGNG0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG上げるならネタを出せ、無能者
0370山崎渉
NGNG0371山崎渉
NGNG0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG上げるならネタを出せ、奴婢
0375デフォルトの名無しさん
NGNGこれってパフォーマンス上のペナルティはないんでしょうか
(インライン化を阻害するとか)
(1)全部managed(JIT様を信じる)
(2)__gcの絡むところだけを#pragma managedして、
残りは#pragma unmanagedにする
どっちがいいですかね
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG上げるならネタを出せ、奴婢
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/visualc/techinfo/articles/loaderlock/default.asp
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGMS社内開発者専用ツール
0383デフォルトの名無しさん
NGNG\Samples\VC\Extensibility\AppWizards
にコンソール用のアプリケーションウィザードと
ManagedC++WindowsFormのアプリケーションウィザードがある。
わざわざ別にしなくてもいいのに。
0384山崎渉
NGNG0385山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNGなんにもなしですか!!!!!
0389デフォルトの名無しさん
NGNG期待して良いのか?どうせまた裏切ら(ry
0390デフォルトの名無しさん
NGNGどこにも書いてねえよ
0391デフォルトの名無しさん
NGNGそれ以外にあるのか?
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG見てみたほうが早い
0399デフォルトの名無しさん
NGNGインタプリタやJavaのようなものとは全く別物だよ
0400デフォルトの名無しさん
NGNGヒープは別。
0401デフォルトの名無しさん
NGNGどこかで読んで以来、まったく興味を無くした経緯がある。
0402デフォルトの名無しさん
NGNGGCに任せるかどうかは選択できるわけじゃん。
0403デフォルトの名無しさん
NGNG「C#はMC++をJava風に味付け」の間違いではなくて?
0404デフォルトの名無しさん
NGNGいや、「まずC#が先にあって〜」みたいな切り口だった。
0405山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0406デフォルトの名無しさん
NGNG>>404
まず.NETがあって、じゃないかなあ
0407デフォルトの名無しさん
NGNGC# でラッパクラス作るよりも、
Managed C++ で書き直しちゃう方が早かった。
てか C# の DllImport うんちゃらがよう分からんですタイ。
Managed C++、思ったより使えそうな感触。
0408デフォルトの名無しさん
NGNGそのための MC++ です
日本語の参考書籍・・・無いよなあ・・・
0409デフォルトの名無しさん
NGNG6800円かそこらの分厚い本で
VC++.NET 解説みたいなのんが有ったんで
チラっと眺めてみたんですが、
Manged C++ に関する記述は 20 ページかそこらだけ。
この厚さで... と涙せずにはいられませんでした。
つーか .NET と無関係な VC++ な記述が殆どを占めてて泣けた。
チラっと見ただけなんで間違ってるかも知れないけど。
0410洗濯猫
NGNGMFCで作ったコードをマネージドに変換して
コンパイルして、
CRLで動くようにできますか?
またドキュメントビューアーキテクチャを
マネージドシープラで実現することは可能ですか?
0411デフォルトの名無しさん
NGNGhttp://yahooo.s2.x-beat.com/linkvp/linkvp.html
0412デフォルトの名無しさん
NGNG間にラッパークラスを挟めば可能
0413デフォルトの名無しさん
NGNGAPI じか叩きしたようなのほど効果有るっぽい。
ところで参照渡しすれば C# で ref する扱いになるみたいだけど
out する扱いは無理ぽ?
ref だけで用事足りるからどうでも良いっちゃ良いのだけど
なんか無駄に気になったので。
0414デフォルトの名無しさん
NGNG{
if (m->Msg == WM_NOTIFY)
{
LPNMHDR nmhdr = (LPNMHDR)m->LParam;
}
}
Managed C++でこういう感じにキャストしたい場合は、どういう方法でやればいいんでしょうか?
dynamic_castなどでもだめでした。。
0415414
NGNGで出来ました。。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG解像度変更を検出したいんだけど・・・。
0418417
NGNGvoid WndProc(Message* m) {
// ...
}
ヘルプにはFormでWndProcをオーバーライドすると書いてあるんですが、
オーバーライドすると' マネージ型で、仮想メソッドへのアクセシビリティを少なくすることはできません。」
とエラー吐かれます。
そもそも1行目の [System::Security... は何を意味するかと子一時間...
0419デフォルトの名無しさん
NGNG0420417
NGNGvoid WndProc(Message* m) {
// ...
}
これだけでいけますた。
さっきのエラーはprotectedで宣言された仮想関数をprivateには出来ねーぞって事でした。
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGほんとだ使えるようになってる。
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(続き)
NGNGpublic 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(続き)
NGNGBookShelf *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デフォルトの名無しさん
NGNGhttp://www.vertigosoftware.com/Quake2.htm
カコ(・∀・)イイ!
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430428
NGNG0431デフォルトの名無しさん
NGNGへー。
こんな感じでやってみたけど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() );
0433デフォルトの名無しさん
NGNG>こんな感じでやってみたけどOKだった。
読んだ瞬間ダメだったのかと思って焦った。
ところでこのToString()はいらないよ。
>Console::WriteLine( v[23]->ToString() );
0434デフォルトの名無しさん
NGNGstatic_castでいいのかな?
dynamic_castで型のチェックした方がいいと思うんだが。
0435425
NGNGほんとですね。
動的にチェックするように変更しました。
(キャスト失敗時に 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デフォルトの名無しさん
NGNG0437山崎 渉
NGNG0438デフォルトの名無しさん
NGNG__gc struct Address{
[XmlAttribute] String *Name;
};
の[XmlAttribute]のアトリビュートだけがなぜか見つからないと出ます。
解決策はないのでしょうか?
(他の属性はSystem.Xml.dllを参照の追加してOKでした)↓
[XmlElementAttribute][XmlArrayAttribute][XmlRootAttribute]
0439デフォルトの名無しさん
NGNG最初のAttributeはXMLの属性のことで、次のAttributeは.NETの属性のことじゃ。
0440デフォルトの名無しさん
NGNG[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│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0442デフォルトの名無しさん
NGNGは使えないのでしょうか?
0443デフォルトの名無しさん
NGNG使えないようですね。
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNGDel厨です。
最近C#がだいたい使えて来たので、
MC++→MFC→非MFCと言う順番に学習したいと思ってます。
C♯→MC++移行で参考になるようなサイトないでしょうか。
たとえば、初心者はC♯よりもVBよりもMC++なら将来ネイティブアプリ作れるとか、
たとえばC++なのに.NETなら簡単にブラウザを作れるみたいな。
無理?
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGカエレ!
0448デフォルトの名無しさん
NGNG参照の追加をしているのですが、
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デフォルトの名無しさん
NGNGmanagedC++はなんでフォーム継承できないんだ?????
0450デフォルトの名無しさん
NGNGコンポーネントを相変わらず書いている私は逝ってヨシですか?
移行するタイミングが難しいんだあ。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++%20CLI%20Candidate%20Base%20Draft.pdf
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG結構居るみたいですよ、そんな人。逆もできるしね。
.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クラスの種類にかかわらず、newもgcnewもできる?
もう少し読もう
0457デフォルトの名無しさん
NGNGC++のリファレンスとの関連性はあるんかな
もう少し読もう
0458デフォルトの名無しさん
NGNGやっぱ単に__gc → refか。
for eachはよいね。
0459デフォルトの名無しさん
NGNGこの時点で、
__gcクラスも指定子がrefになって、見た目に分かりやすいな
と言えばよかっただけか。
てか、誰もいないじゃん。一人芝居ショボン
0460デフォルトの名無しさん
NGNGそのときはアホな設計だなぁ、と思ったのですが、
手元にあるショボイ入門書を見ると「単純型」というのがあるので、
これが Javaでいうプリミティブ型に相当するのではないかと思うのですが、
実際のところどうなんでしょうか。教えて Teach Me
0461デフォルトの名無しさん
NGNGそうだよ
value classのこと
Javaより柔軟だから
0462461
NGNGそもそも、「managed C++は整数もかならず整数オブジェクトになる」んだっけ?
教えて Teach Me
0463461
NGNGManaged C++ ≒ Java
__value class≒primitive type
__gc class≒class
__box(__value class)≒class Wrapper { primitive type member; }
こんな感じ
0464デフォルトの名無しさん
NGNGjavaで言うところの、primitive型とclass型の間を、比較的簡単に
行き来できるのが.NET系の言語の特徴。
MC++でもそれを利用できるが、intと書いただけでIntegerオブジェクトが
生成されるわけではない。
value型とclass型の違いはCLRでも重要な事項なので、
MC++に触れる前にしっかり理解しておいたほうがいいと思う
0465デフォルトの名無しさん
NGNGMC++でも、intはSystem::Int32 value type(simple type) だと思うよ
0466デフォルトの名無しさん
NGNGコンテキストに依存するのでは?
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNGそう書いたつもりが、そうなってなかった
宇都氏
0469デフォルトの名無しさん
NGNGそろそろ飼いならした人が増えてきてもいいんじゃないかなー
日本語の解説書が欲しいところ
0470デフォルトの名無しさん
NGNG出版社を探して自分で翻訳;-p
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/1893115283/
このへんかな。前者は持ってる。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGttp://weblogs.asp.net/slippman/
0475デフォルトの名無しさん
NGNGかな〜り遅いレスだが、これは msvcrt.lib, msvcrtd.lib をリンクすればいい
でも、なるべく #pragma unmanaged のエリアで使おう
0476デフォルトの名無しさん
NGNGmanaged C++ で boost::spirit のC構文のサンプルをコンパイルしたんだが、
C1129 つーエラーが出て歯がたたねぇ
普通のC++としてはサンプルは無事動くのに、managed C++ じゃテンプレートの
展開が違うのか?
0477デフォルトの名無しさん
NGNG自己解決。boostをインクルードしているとこまでまとめて unmanaged 指定してやったら
コンパイルは通過。ただし、リンクエラーLNK1254でだめぽ
r'⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒X⌒ヽ ⊂゙⌒゙、∩
ヽ__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__乂__ノ ⊂(。Д。)
0478デフォルトの名無しさん
NGNGコードの中で混在させる事は出来ますか?
.NETは資料が少ない(C++の場合)ので、自分にはメインでは使えないのですが
簡単にスレッド起こせたり、フォームの半透明とかが簡単だったりするんで・・・
0479デフォルトの名無しさん
NGNG> 自分にはメインでは使えないのですが
> 簡単にスレッド起こせたり、フォームの半透明とかが簡単
そういう部分をメインというと思うんだがどうか。
0480デフォルトの名無しさん
NGNGC#で
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地道に String::Concat かな?
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGとりあえず
sprintf(buf2,"01%d %d\0",textBox1->Text,textBox2->Text);
としました。。。(Cの知識しか殆ど無かったりします。
0484デフォルトの名無しさん
NGNG0485483
NGNG>>480で書いたC#のコードと
>>483でやったコードの結果が違うようです。
一応、この文字列をUDPでサーバーへ転送するのですが
サーバー側でフフフという文字が大量に発生してしまいます。(\0が無い為?
何故このような事がおきるのでしょうか?
0486デフォルトの名無しさん
NGNGこんな感じで\nを付けてみ
0488デフォルトの名無しさん
NGNG{
public class ホゲホゲ
{
}
}
C#で上のように書いたコードを Managed C++ で書き直した場合どうする?
namespace 会社名.プロジェクト名
{
__gc class ホゲホゲ
{
};
}
って書けない?
namespace を一発で書くような方法をきぼんぬ。
0489デフォルトの名無しさん
NGNGByte receiveBytes[] = udpClient->Receive(&RemoteIpEndPoint);
String *returnData = Encoding::ASCII->GetString(receiveBytes);
MessageBox(NULL, returnData, "", MB_OK);
こんな感じで受信結果をMessageBoxで表示したいのですが
型が違うため出来ません。
どのようにすればいいのでしょうか?
0490デフォルトの名無しさん
NGNG・エラーの詳細
を書け
0491489
NGNGここで
error C2664: 'MessageBoxA' : 2 番目の引数を 'System::String __gc *' から 'LPCSTR' に変換できません
マネージ型をアンマネージ型に変換できません。
です
0492489
NGNGsprintf(RevBuf,"%s",returnData);
こんな感じで、無理やり変換しましたけど。。。
なんだかなぁ・・・
0493デフォルトの名無しさん
NGNGString型をC文字列に変換するメソッドがあると思うけど。
0494デフォルトの名無しさん
NGNGなんでMC++はこんなに普及しないんだ?
時期OSの仕様がああなった以上、.NETは避けて通れない道
現に、C#の書籍や情報はあちこちに溢れてる
でも、C++で.NETってのがこんなに普及してないのが不思議でしょうがない。
なんでだろう・・・・・
俺も勉強したくても書籍はないわWebにも殆ど資料ないわ、MSDNにはC#とVB.NETのみだわで大変
もしかしてC#の方が楽って事?
Win32APIやMFCで作った過去の遺産を使いたいって人も居ると思うんだが・・・
0495デフォルトの名無しさん
NGNG聞いたことあるけどホントですか?
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGMC++とはまた別のものを作ってるという話もあるよ
0498デフォルトの名無しさん
NGNGMC++はつなぎなんじゃないの
0499デフォルトの名無しさん
NGNG.NETでマネージドC++なんか使ってるやつの気がしれない
0500デフォルトの名無しさん
NGNGこれもMSの計略か・・・・
0501デフォルトの名無しさん
NGNGネイティブじゃないなら存在意義が無いし
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGCOM化するのが正統なんだろうけど、それもメンドいことあるし。
0504デフォルトの名無しさん
NGNGそれは漏れも悩んだが駄目らしい
boost みたく
namespace boost { namespace spirit {
}}
と書くことにしてる。こういうところこそ拡張してほしかったんだが
0505デフォルトの名無しさん
NGNG前のドアがあるのに裏口が無いようなもの
0506デフォルトの名無しさん
NGNGテレビで食事は放送しても排泄は放送しないだろ。
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG入るときにはどのドアに入るか自分で選ばないと駄目だけど、
出るときは自動排出。
0510デフォルトの名無しさん
NGNGA a;
a = A( 3);
これでよくない?
0511デフォルトの名無しさん
NGNG型や構造体と同じ使い方で良い
0512デフォルトの名無しさん
NGNGTest test(80, 100);
こういう宣言ができれば、new 無しでもいいんだよなぁ
ref もあるわけだし、受け渡しで困るわけで無し
(´-`).。oO(・・・なんでマネージド型はポインタじゃないといけないんだろう)
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGマネージド型って値型で作成できるの?
__gc が付くクラスは new しないと駄目よってエラーが出るんだけど
0516デフォルトの名無しさん
NGNG__value 使え
0517デフォルトの名無しさん
NGNG__value struct V {
int i;
int r;
};
とか。
0518C ◆dZiiJEl1F6
NGNGそれはちゃんと参照渡ししてくれるの?
値渡しでは意味なさそうだが・・
0519デフォルトの名無しさん
NGNGIsValue を入れると付くやつだよね?
これってマネージド型とは排他的だと思うんだけど
0520519
NGNG('A`)マンドクセ ・・・MC++の存在意義を見失いそうな気分です
0521デフォルトの名無しさん
NGNG>MC++の存在意義
既存コードの流用が簡単ってこと以外、MC++に意義なんてあったっけ?
0522デフォルトの名無しさん
NGNG次のコードで参照渡しはできそうだね。
#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既存コードの流用もCOMにしておいた方が便利だし、あまり利点になってない
既存C++のパワーと.NETライブラリの融合を期待していたのに_| ̄|○
0524デフォルトの名無しさん
NGNGレス、サンクス!
質問の意味が分からず、総スカン食らったのかと思たよ。
けど、やっぱ、ダメなのね。
これが煩わしいのと、
C#でいうところの param が指定されたメソッドを呼び出すのが煩わしいのがあって、
MC++は、本格的に利用できないね。
さらに次のバージョンではC++ CLIになるし、
個人的に、MC++はボツかなぁ....。
0525デフォルトの名無しさん
NGNG.NET MC++
ということ?
0526デフォルトの名無しさん
NGNGなんでC++にそこまで執着するわけ?
もうC++ CLIも要らないよ
0527デフォルトの名無しさん
NGNG特にtemplateの夢はC++プログラマなら離れられないものなんだよ・・・。
0528デフォルトの名無しさん
NGNGいまどきテンプレートだって。
Visio 使えよ Visio! プ
0529デフォルトの名無しさん
NGNG最近の Visio はすごいんだな((;゚Д゚)ガクガクブルブル
>526
template に関しては Generic で C# でもサポートされるところがあるから、微妙かな
ただ、やっぱりあるでしょ? MSに対するそこはかとない不信感が(w
だから、C++ はあくまで限りなく標準のままに .NET との親和性を深めてホスィ
0530MaccroSoft
NGNG信じよされば巣食われる。
0531デフォルトの名無しさん
NGNGだからC#使うんだよ。ECMA標準。もうすぐISO標準。
0532デフォルトの名無しさん
NGNGまぁ、漏れは趣味ではC、仕事ではJavaとCOBOL(過去の遺産w)だけどね。
0533デフォルトの名無しさん
NGNGVisio より知名度が低かったりして。
0534デフォルトの名無しさん
NGNGさすがにそれは・・・、Java も C# も template のありがたみがわかって回帰してるわけだし
C#の標準化ってCILも含めてなの? それとも言語仕様だけ?
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGMFC厨だとありえるが・・・
0537デフォルトの名無しさん
NGNGそっか。ごめん漏れにはやっぱりMSは信じ切れないよ(´・ω・`)
C++ CLI が来るまで待つかぁ
>536
恐ろしい話だ・・・
0538デフォルトの名無しさん
NGNGC++ CLI出ても、それはMS主導だから一緒でしょ
0539デフォルトの名無しさん
NGNG信用できないとか言ってる奴はアフォか?
0540デフォルトの名無しさん
NGNGWindowsの動作そのものを理解してないやつばっかり。
0541デフォルトの名無しさん
NGNGすみません、Windowsの作者ですがMFCやCOMを馬鹿にしてますが何か?
0542デフォルトの名無しさん
NGNGああ、あなたがあのブサイクなメガネチビ・・・
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGあるらしいけど、OS板の香具師はデビッドカトラー
症候群ってものがあるのかな。カトラーだって
MachのアイディアをMSに持ち込んで、そこから設計したって
いうのにね。OSASK。。。
0545デフォルトの名無しさん
NGNGするとこんなエラー出るんですけどどうにかならんですか?
error LNK2020: 未解決のトークン (0A00000B) atexit
error LNK2020: 未解決のトークン (0A000012) ??_7type_info@@6B@
error LNK2020: 未解決のトークン (0A00001A) free
fatal error LNK1120: 外部参照 3 が未解決です。
CComPtr とか使いたいのに
0546デフォルトの名無しさん
NGNG>475
0547545
NGNGたすかりますた!!
ここはいいインターネットですね。
0548デフォルトの名無しさん
NGNG前者を入れた後に後者を入れると前者のドキュメントの目次等が表示できなく
なるのです。解決策等ご存知でしたら、ご教示願います。
0549デフォルトの名無しさん
NGNG漏れもそれなった。PSDK入れた後に.NETSDK1.1を入れたら。
とりあえず不具合はそこだけなので、そのまま放置してます。
0550デフォルトの名無しさん
NGNG0551548
NGNG0552デフォルトの名無しさん
NGNGWedbey のところじゃ、__gc が ref になるとかSTLとの親和性が上がるとかの
断片的な情報しかないんだけど、ECMAに仕様を提出して標準化するって書いてあるから
今のうちにMC++との違いを認識しておきたいんだけど
とりあえず、ロードマップの日本語版
ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/roadmap.asp
0553552
NGNGPDFなんで注意
ttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++%20CLI%20Candidate%20Base%20Draft.pdf
0554デフォルトの名無しさん
NGNGこのPDF見ると、CLIもECMA,ISO/IECに標準化するのね
0555デフォルトの名無しさん
NGNG素直にC#に行った方が飯食える気がする・・・
っていうか、C++/CLIって出る前から雲行き悪すぎるし、話題にすら殆ど上がって無いあたり。。。
MSは次期OSは.NETで統一するんだし(決定済み)
.NETの為に作成したC#が一番.NETが使いやすいんだし(事実)
こう考えると、C++にいくら自分が残っても、飯食うために使う事は出来ない気がするんだけどなぁ・・・
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG(そういう需要があるかとか、移行がスムーズにいくかはさておき)
新規の開発でmanaged C++を選択する必要性や動機はほとんど無いだろね。
>555が書いてるように、C#で開発した方が生産性高い。
C#が選択肢になりえない対象の場合は、managed C++も選択肢にほぼなりえない。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNGマネージドコードからアンマネージドなコードを呼ぶだけなら
なおさらMC++である必要はない罠
0560デフォルトの名無しさん
NGNG覆すことだけはないって
もしも、現状の 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理想としては、従来の 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デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGMC++ が移行準備段階で、C++/CLI が移行中な感じ
個人的には WinFX が来るのと同時に、C++/CLI がもう一つ構成が変更されるように思える
MC++ が既存の C++ に マネージド型を扱うためのキーワードを追加してなんとかやりくり
しようとしているのに比べて C++/CLI の方は CLR との相互やりとりのエリアを扱うハンドル
型を追加したりして、Heap Alloc と GC Heap 上のエリアを並立させようとしている模様
詳しくは上の Candidate base でも呼んでちょ
0566デフォルトの名無しさん
NGNGMac 用の Office とかがあるから、公開するかはともかく CLR は作るんじゃない?
Office は .Net 化するらしいから、ソース管理を考えるとブランチ分けするよりは CLR
を作るかと
0567デフォルトの名無しさん
NGNGJava の失敗から見てもわかるとおり、アンマネージドな部分の要求は決してなくなることは
ないと思う。(私にとってだが)業務用の主となる解析や描画、Design 演算はまずマネージド
にならないだろうし、既存の資産との流用性からアンマネージドな部分を作り、接続する言語は
必要だ
まず、この点は認めてもらえるだろうか?
その上で、マネージドとアンマネージドな領域を自在に行き来できる言語として MC++
(は駄目だけど、その先のC++/CLI)があるのではないかと思う
これは開発者にとって充分に魅力的だと思うんだが、違うかなぁ
なんか昔の PureJava 論議みたいになってきた気がするが(w
0568デフォルトの名無しさん
NGNG価値あると思うよ
今のはおよそ自在とは言えない代物だからね
0569デフォルトの名無しさん
NGNGthin wrapperを作るためのもの、にしては
あまりにリッチだと思うぞ。
そこにそんだけリソースを費やせるのはMSぐらいのもんだろうけど。
Javaの失敗というのには同感。JNIははっきり言って拷問。
MC++の自在っぷりは異常。.NET語とC++語とマシンコードを
同時に解釈できるのはなにげにすごいぞ。
0570デフォルトの名無しさん
NGNG日本語の参考書籍が1つも無い状況っすよ?
こんなのでは勉強もやりにくいし・・・
もうわざわざC++使う必要もないんじゃないかな・・・
既有技術そのままで実装出来るとは思えないし・・・
0571デフォルトの名無しさん
NGNGいったいどんな田舎に住んでるんだろう?
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGなにをそんなに慌ててるのかしらんが。
0574デフォルトの名無しさん
NGNGまぁ、5冊だけどな
資料が少ないってのは事実っしょ。
普及してないってのも事実だし。
正直、C#に行かずにMCにとどまる理由は、移行のためのラッパー書くのみっしょ
それ以上の使い道ないから、移行が完了すると、もう使う事もないでしょうし
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNGコンパイルできるっぽい
ふつうに Whidbey のプロジェクトから /clr のオプションをつけると /clr:oldSyntax と
なって C++/CLI の構文はエラーになるけど、コマンド・プロンプトで cl /clr とやって
コンパイルを通ると、動いたよん
0577デフォルトの名無しさん
NGNGクラスのインスタンスを作る時に
グローバルな領域において置きたいのですが
MC++だと関数の中でしかインスタンスを作れません。
どうすれば各関数から共通のインスタンスを使う方法を実現出来るのでしょうか?
0578デフォルトの名無しさん
NGNGまずはsageを覚えろ。
0579デフォルトの名無しさん
NGNGその次にシングルトンを覚えろ。
0580デフォルトの名無しさん
NGNG出来ない。
設計見直せ。
何のためのnamespaceであり、何のためのクラスか知るべし
どうしても共通のインスタンスが必要ならば
0581デフォルトの名無しさん
NGNGどうしても必要ならば
と思ったけど、もう>>579で答え出てるか・・・
0582デフォルトの名無しさん
NGNGよく分からないのでとりあえずsageで・・・
え〜と、質問なのですが
VC++.NETでMC++でコード書いてるのですが
今までSDKでやってたので、.NETではウインドウプロシージャはどうなってるのでしょうか?
と言うのもWinsockのWSAAsyncSelect()を使いたくて、メッセージを受信したいのです。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNGとりあえず半日調べての質問です。。。。
すみません、探し方が悪いとは思うんですが、キーワードも適切なのが見当付かずに・・・
0585デフォルトの名無しさん
NGNGvoid System::Windows::Forms::Control::WndProc(Message* m);
次は、メッセージが定義されてないんですけど、とか訊くなよ
0586デフォルトの名無しさん
NGNG素直に、グローバルな値はアンマネージドクラスで定義した方が早くない?
0587デフォルトの名無しさん
NGNGVC++2005 のプロジェクトのプロパティにある、C++ のコマンドラインオプションに、
/clr を追加すれば、警告が出てくるが、/clr:oldSyntax を上書きしてくれる。
それがいやなら、「use managed 〜」のチェックをはずす。
0588デフォルトの名無しさん
NGNGThx. チェック外して自前でコマンドラインに追加するっす
しかし、>>553 以外の C++/CLI のちゃんとした構文ドキュメントってどっかにないかねぇ
0589588
NGNGこれは何の資料なんだろう。QuakeIIのソースを利用した調査かな
0590デフォルトの名無しさん
NGNG「Use Managed 〜」のチェックをはずすと、
コマンドラインで取り込んでいるモノがすべて消えるので注意。
メモして自前で記述する。
0591デフォルトの名無しさん
NGNGりょうかいです
プロパティもとはちょっと変わるんだねぇ
ref class R {
private:
int size_;
public:
property int Size {
int get() { return size_; }
void set(int val) { size_ = val; }
}
};
0592デフォルトの名無しさん
NGNGこれは ISO C++ のワーキング・グループがまとめた C++/CLI の説明らすぃ
今回の Whidbey でどこまで実装されてるかチェックしてみます
0593デフォルトの名無しさん
NGNGttp://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=whidbey&sLCID=US&sgroupURL=microsoft.private.whidbey.cplusplus.language&sMessageID=%[email protected]%253E
0594デフォルトの名無しさん
NGNGおおう、おおむねこのリスト通りであることを確認しますた
・ファイナライザ(M4.2) 未実装
・プロパティ
機能を確認
・インデックス・プロパティ(M4.2) 未実装
・ref クラス内でのSTLコンテナの記述
マネージド型と非マネージド型の混在するmapが作れなかった
stdcli はたぶんかなり先
・delete
ref 型に対する機能を確認
・for each(M4.2) 未実装
・marshal_as 未実装
・native 型からの継承 未実装
・static な operator (M4.1) 機能を確認
generic と template はまだ見てないです
0595デフォルトの名無しさん
NGNGvoid foo(array<Object^>^arr); // 可変長引数
ref class Foo {
std::vector<int> *vec_;
public:
Foo() : vec_( new std::vector<int> ) { // 初期化時のnew
}
~Foo() { delete vec_; }
};
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNGref class C { /* .. */ };
C ^ h = gcnew C; // OK
(*h).do_something(); // OK
C * p; // Compile Error
sizeof( *h ); // Compile Error
orz
0598デフォルトの名無しさん
NGNGコードをラップするマネージドなクラスを生成して、
マネージドコードなUIプログラムとリンクさせたアプリケーションを
作った場合、アンマネージドなスレッドの動作にGCコレクションを
割り込ませないようにすることは可能でしょうか?
例えばアンマネージドなスレッドを優先的に動かしたい場合
などです。
0599デフォルトの名無しさん
NGNG具体的には何とも言えんが、用はネイティブなスレッドが起動している間はGCが
動いてその親であるマネージド型を回収してほしくないってこと?
__pin しる
__pin はアンマネージドが動いている間、対象となるオブジェクトをGCしないことを
保証してくれる
0600デフォルトの名無しさん
NGNGこれって、こういうもんだろってスルーしてたけど、マネージド型って C++/CLI では
ハンドル型として規定されて、クラス・インスタンスとは同等ではないから >>597 の
振る舞いで問題はないと思う
アンマネージドなクラスがマネージド型を保持するときだけ、* でのポイントを認められて
いるけど、ネイティブとマネージド型の混在は M4 を通しての課題らしいから、まだ動いて
いないかと
0601598
NGNG__pinはメモリを移動しないって意味ですよね?
そうではなく、私が考えているシチュエーションは
1)優先度が高いアンマネージドなスレッドがアクティブな時に
GCが走り出さない保証があるか?
2)通常優先度のマネージドなコード実行中にGCが走り出した場合、
そこに優先度が高いアンマネージドなスレッドが割り込むことが
可能か?
ということです。helpみてるとGC中は(同一プロセス内の?)
全スレッドが中断されるみたいな記述があったようなきがした
のですが、これってアンマネージドなスレッドも含まれのでしょうか?
優先度の高い所だけプロセス分けるって手もあるんでしょうけど…。
0602デフォルトの名無しさん
NGNGでもなぁ、>>589 のPDF みると、将来的には出来そうなんだよなぁ。
これが出来れば、T がマネージドなクラスかそうでないかをコンパイル時に
判定することも出来そうなので、なるべく早い段階で使えるようにしてほしい。
0603デフォルトの名無しさん
NGNG実行モデルの問題ですね
NativeスレッドとGCのどちらが優先度が高いのか、正直こんなとこで訊いてないで
やってみればいいんでない、とか思わなくもないですが、ざっと調べた限り、CLRと
Nativeの混合状態での実行モデルのようなものは見あたりませんですた
つーことで、試してみました
native スレッドは通常のプライオリティで、ひたすらミリセカンドまで表示し続け
GC側はマネージド型を10000個作って、GC::Collect をかけます
とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ
セカンドですが、GC::Collectのタイミングでだいたい+30ミリセカンドぐらいです
もちろん誤差も含んでますし、タイミングもあると思いますが、まぁ、COMでapart
にしたほうがよろしいかと思います
0604デフォルトの名無しさん
NGNGM4終了がいつかってことだよね。WGのタイムテーブルだと、C++/CLIの最終勧告が
2005年末ぐらいだから、構文とベース機能(nativeとmanagedの併存の実現)は今年
いっぱいぐらいじゃないのかなぁ
年末あたりにベータが出るかもね
0605598
NGNG>やってみればいいんでない
おっしゃる通りです。今夜にも同じようにして試してみます。
>とですね、見事にGCのタイミングで出力される時間が飛んでます。普段は10ミリ
うーん、残念です。ここら辺が保証されれば、私的にはmanaged C++最強!
なわけですが…。っていうか実行モデルの問題か。
まあ、windows上でTimeCriticalなアプリ組むのもどうかってのもあるけど。
わざわざ試して頂いて、ありがとうございました。
0606デフォルトの名無しさん
NGNG0607しぃ
NGNGプロジェクトを新規作成して何もコードを書かずにデバッグ実行を開始しても、フォームが出てくるまで30秒ぐらい待たされます。
デバッグなしの実行ではすぐに出てくるのでデバッガの問題だと思うのですが。
2002の時も「Hello World」がコンソールに出てくるまでやはり30秒ぐらいかかります。
どなたか解決策をご存じないでしょうか?
ちなみに環境はWinXPPro、AthlonMP2000+Dual、メモリ512MBです。
ノート(WinXPHome、PentiumM1.4GHz、メモリ512MB)や職場のPC(Win2k、Pentium4-2GHz、メモリ256MB)でも同様でした。
よろしくお願いします。
0608デフォルトの名無しさん
NGNGアンチウイルスソフトとかつかってる?
0609山本五十六
NGNG馬鹿だろ?さっさと死ねよ
0610デフォルトの名無しさん
NGNGなんか大量にモジュールをロードしてる感じ。
ナニカ常駐させれば速くなるのかな?
0611デフォルトの名無しさん
NGNG2002 の時はそうだったが、2003 になってからは感じなくなった
当時も環境の問題だろうと言われて、消えていったんだが、マルチポストのスレ違い
を相手にしないでくれ
いい感じに沈んでたのに
0612しぃ
NGNG自己解決しました。デバッグモードを「自動」ではなく「マネージのみ」にすると早くなりました。デバッグも出来るみたいです。お騒がせしました。
0613デフォルトの名無しさん
NGNGお礼すんのにあげんなァァァ
0614デフォルトの名無しさん
NGNG{
int a;
a=atoi(textBox1->Text);
}
error C2664 'atoi' 1番目の引数を'System::String __gc*'から'const char*'に変換できません。
フォーム上のボタン button1 をクリックしたら
textBox1 の text プロパティを数値に変換したいのです
デザイン時 text="10"です
0615デフォルトの名無しさん
NGNG上げないで欲しいんだが・・・
文字列の変換はユーティリティを利用する
#include<vcclr.h>
と宣言して、
wchar_t __pin *pRawString = PtrToStringChars(textBox1->Text);
これで、ワイド文字列になる。あとは、ワイド文字列に対応した wcstol を使って欲しい
よく考えると、この文字列処理ってこのスレに書いたことがなかったなぁ
0616デフォルトの名無しさん
NGNGあーっと、スマソ
こっちだ wcstol −> _wtoi
0617デフォルトの名無しさん
NGNG遅レス&age申し訳ないです
今確かめました。修行してきます・・・
MSDN C++マネージ拡張の仕様
7.8 文字への直接アクセス
これ自分には勉強になりました
0618デフォルトの名無しさん
NGNGC++ CLI はどこまで進んでいるんだろう…
0619デフォルトの名無しさん
NGNGこんな感じらしい
ttp://blogs.msdn.com/slippman/
もうしばらくしたら確認してみる
0620149
NGNG自分はVC++メインに使っていて、最近やっと.NET触ることになり調べてるんですが、C#も便利そうなんですが、テンプレート使えないので躊躇しています。
自分なりのメリットデメリットです。まだ本診ただけなので間違ってるところも多々あると思いますが
ManagedC++
テンプレートつかえる。stl、boostなどになれたものには何よりも変えられん。
アンマネージとの共存がちょっとやりやすそう
C#
記述がC++よりもすっきりする(個人的に)
デリゲート、イベント使える
0621620
NGNGハンドルは間違いです...
0622デフォルトの名無しさん
NGNGまず、MC++ に対する認識について、マネージドクラスに対してはまだテンプレートは
あまり使えんです
また、マネージド、アンマネージドの混合したクラスも作れんです
だから、単純に言語としてのレベルでは C# の圧勝と言ってもいいと思います
それで、C++/CLI とかで上で騒いでるわけですが
ただ、アンマネージドなプログラムから、マネージドなクラス・ライブラリを摘み食うことが
できるのは、MC++ の唯一最大の特権ではないでしょうか
また、処理速度を必要とする部分を組むのに、アンマネージドで組んでマネージド側に
ラップして機能を提供するという点を考えると、MC++ を避けて通れないと思っています
どこでも継子扱いなんだけどね(´・ω・`)ショボーン
0623デフォルトの名無しさん
NGNGテンプレートはマネージドに対して少しは使えるんですか?
0624デフォルトの名無しさん
NGNG言い忘れてたけど、できれば sage て
アンマネージド・クラスで gcroot 使ってマネージド・クラスを持てば、アンマネージド・クラスに
ついてはテンプレート使えるけど、現状の CLR 自体が Generics について拡張されるのを
待ってる状態だから
すぐに仕事に使うんじゃなければ >589 でも読んで(*´Д`)ハァハァするがよしかと
0625デフォルトの名無しさん
NGNGマネージド拡張の未サポート説明
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcManagedExtensionsSpec_25.asp
MSDN日本語ドキュメントにも付いてたはず
0626デフォルトの名無しさん
NGNG単純なSTLの利用程度だったら gcroot を使う方法がここにある
http://www.codeproject.com/managedcpp/
0627デフォルトの名無しさん
NGNG多重継承
リフレクション
デリゲート
テンプレートorGenerics
ガベコレ
アンマネージとの密接なやり取り
...2005年まで待つのか...いやほんとに2005年に出るのか?
0628620,627
NGNG0629デフォルトの名無しさん
NGNG基本的には M4.1 ベースでバグフィックスを進めたみたい
今回の Whidbey からはプロパティ上で /clr /clr:pure /clr:safe /clr:oldSyntax が設定できる
ようになってた
後は、.Net FW は 2.0 ベースになってた
0630デフォルトの名無しさん
NGNGinterface 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どっかにサンプルころがってないかな?VC++.netのコード。
0632デフォルトの名無しさん
NGNGCodeProject の C++ WebSrevice あたりで、あるんでない?
この間、WebServices を作ってて、Application や Session にアクセスできることを
今更ながら知って感動していた
いや、漏れが物知らずだったんだけどさ(´・ω・`)ショボーン
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGベータが出るまで話題がないなぁ
と、保守
0635デフォルトの名無しさん
NGNG相変わらず、ファイナライザはない
相変わらず M4.1 らしい
0636デフォルトの名無しさん
NGNGboost::is_base_and_derived< System::Object, T >
とかかけるようになるのはいったいいつになるのだ。
0637デフォルトの名無しさん
NGNGC++,ATL,MC++で書いたライブラリをDLL化
しないで使うことって可能ですか?
あとからexeとdllを一つにできるのでもいいです。
0638デフォルトの名無しさん
NGNG無理
0639デフォルトの名無しさん
NGNGやっぱMSDNライブラリしかない?
0640デフォルトの名無しさん
NGNG漏れはこれで勉強した。いい本かどうかは微妙
ttp://www.amazon.co.jp/exec/obidos/ASIN/1893115283/qid=1090330561/sr=1-4/ref=sr_1_10_4/249-9037969-2157104
0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNG洋書でいいなら"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デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG対応型 __gc[] じゃ駄目?
params char[] だったら wchar_t __gc []
0645643
NGNG何かしらの Attribute だと思うのですが、見つけられていません……。
0646デフォルトの名無しさん
NGNGC#
System.Console.WriteLine(string format, params object[] args)
C++
System.Console.WriteLine(String *format, Object* arg __gc[])
ってなってるんだけど
0647643
NGNGParamArrayAttribute でした。
MSDNの言語フィルタをVBにしたら気づきました。
>>646
その __gc は、単に managed 配列を表すだけの、省略可能な修飾子ですよ。
0648デフォルトの名無しさん
NGNGvoid Func(String *forms, Object * args[])
具体的にはこんな感じになるのでしょうか?
0649643
NGNGvoid Func(String *forms, [ParamArray] Object * args[])
ただ、managed C++ だと、最後の引数以外につけてもエラーにならないんですね。
C# の params だとちゃんと怒られるのに……。
0650デフォルトの名無しさん
NGNGジェネリックテンプレート
template <typename Interface>
generic <typename Type> where Type : Interface
public ref class GenericTemplate{
・
・
・
}
こんなのを書いたら怒られた。
コンパイラ君、無理言ってスマンカッタ
0651デフォルトの名無しさん
NGNG・・・そりゃ難かしいでしょう
でも、できたらうれすぃ
0652デフォルトの名無しさん
NGNGWhidbey のサンプルでは、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デフォルトの名無しさん
NGNGif (Path::GetExtension(filename) == S".BIN")みたいに書きたいんだけど。
0655デフォルトの名無しさん
NGNGif ( Path::GetExtention(filename)->ToUpper()->Equals(S"BIN") )
って書けばいいかと
== もちゃんと動いている気がするけど、念のために
0656デフォルトの名無しさん
NGNGぶっちゃけイケてる?
0657デフォルトの名無しさん
NGNG逝けてる
0658デフォルトの名無しさん
NGNG既存のライブラリを使いやすいという意味ではかなりいけてる。
まあ、MC++で Managed ラッパクラス作って、それを C# から使うのがベストな気がするが。
0659デフォルトの名無しさん
NGNGC++ で .Net フレームワークを綺麗に使いたい。でも、__gc とかうっとうしい。という要望に
完全に応えている。ハンドル型とか最初は気になるけど、自動変数の気分で使い捨てる
ことができる
C# くらいに C++ が .Net フレームワークへの親和性を高めたものと感じる
ここまで作りが違わないと、逆に C# でコード組む気がなくなるよ
後は、マネージド、アンマネージドの混在が実現できれば、言うこと無し
標準 C++ で組みたいときはそのまま組めばいいし、ふと、マネージドに繋げたいときは
さっくりソース持ってきて纏め直して、ref つけるだけ
ベータ・レベルのできばえとしては、べた褒めする
まぁ、まだ、ベータだし、ってとこいっぱいあるけど
0660デフォルトの名無しさん
NGNGhttp://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こんなのもあったのな
0662デフォルトの名無しさん
NGNG別ファイルからこのクラスは__gcにする、とかいう指定が出来るようになればいいな。
0663デフォルトの名無しさん
NGNGなんか、できそうな気がする
アセンブリに纏めるということを前提に、export するクラスを別ファイルでこのクラスは
ハンドル型で扱えるようにすると指定しておいて、アセンブリにまとめるときに、対応する
インターフェイス名を指定してマッピングし、旧来のソースをマネージド型として扱うという
やり方なら作れるんじゃないかな
0664デフォルトの名無しさん
NGNGBindingContext[dataSet1,"TableName"].Position++;
はCPPでどう書くの?
0665デフォルトの名無しさん
NGNGそうすと、C#囲い込み戦略byM$が破綻するから、出来ない仕掛け。
0666デフォルトの名無しさん
NGNGぜんぜん論理的じゃない。
0667デフォルトの名無しさん
NGNGMSDN に書いてあるじゃねぇか
BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1
>665
え? 自作すればいいだろ、これぐらい
ファイルの対応表から、マネージド・ラッパのクラス吐いて、インターフェイスの実装再配置を
使って、アンマネージドなクラスにマッピングすればいいんだと思うが
もしかして、それよりもずっと高度な話を言ってる?
0668デフォルトの名無しさん
NGNGやれることに違いは無いのかな?
0669デフォルトの名無しさん
NGNG言語って、そういうものだろ?
0670デフォルトの名無しさん
NGNGまあそうですけどね。ただ、VJ++とCOMのシームレスな連携と
C++とCOMのあのメンドクささを、ただの記述の違いというには
個人的には違和感を感じます。あれぐらいの違いがあるのかなと。
0671デフォルトの名無しさん
NGNGC++/CLI の最大の焦点は、マネージドとアンマネージドの2層化
MC++ ではCILヒープとヒップの層の分離ができていないために、総てが一緒くたに
new していた。だから、逆に何を削除するか、何をガベージに任せればいいのか
わからなくなっていた
MC++ はその試行錯誤の段階の言語といえる。管理を明確にし、型を分離し、配置位置を
ちゃんと意識しながらコーディングできるようにしたのが C++/CLI
そして、同時に標準 C++ の純粋性を保持しようとしている。また、継承関係でもマネージド
・非マネージド間での相互参照を許可する(予定。笑)設計になってる
これらを考えると、内部的にはかなり違っている。追加された表記は特にオブジェクトの
配置位置を明確にすることと、さりげに、C++ の抽象化への不満を解消するための
キーワードが多い
こんな感じで良い? まぁ、口で説明受けるより組んでみた方が良い
漏れの意見はちょっとヽ(´ー`)ノマンセー意見が過ぎると思う
ECMA 標準化 C++/CLI ドラフト
http://msdn.microsoft.com/visualc/homepageheadlines/ecma/default.aspx
0672デフォルトの名無しさん
NGNG自作のアイコンを作成してFormに適用しました。タスクバーにもアイコンが表示されています。
ところがXPにはタスクバーにアイコンが増えるとアイコンをまとめる機能があり、
これが働くとデフォルトのアイコンに戻ってしまいます。
たぶんフォームではなくアプリのアイコンを表示しているのだと思います。
アプリケーションに自作のアイコンを適用するにはどうすればよいのでしょうか?
C#ではプロジェクトのプロパティにビルドという項目があってそこで指定できます。
しかしMC++にはこれがありません。app.icoを自作のアイコンで上書きしたところ、
app.rcの中も自作のアイコンに置き換わりましたが、上記の不具合はなおりませんでした。
0673672
NGNGapp.icoを上書きすればよかったのですね…。
debugビルドでは反映されないので混乱してしまいました。
0674デフォルトの名無しさん
NGNGが
BindingContext->get_Item( ds, "Customers" )->Position = groupBox1->BindingContext->get_Item( ds, "Customers" )->Position + 1
に化けるのか。
なんかどこかで見たような....
そうそう。C++Builder で Delphi のクラスを使うときも、こんな感じで記述が増えた。
同じことをやっているんだね...
0675デフォルトの名無しさん
NGNGただ単に、現状の C++/CLI では、インデックス・プロパティをサポートできていないから
こうなってるだけなんでは?
インデックス・プロパティに対応したら、
BindingContext[ds, L"Customers"]->Position = BindingContext[ds, L"Customers"]->Position + 1;
になるでしょう。もっとも、+や++をわざわざオーバーロードする気がなさそうなんで
あまりかわんないけど
0676デフォルトの名無しさん
NGNGBindingContext->get_Item( ds, "Customers" )->Position++;
こんなにすっきり。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNGクラス変数はGCポインタをもてないので。
0679デフォルトの名無しさん
NGNG使う方法教えてくれ。これなしでC++のプログラムをせいと
いうわけじゃなかろ?
0680デフォルトの名無しさん
NGNGSingleton クラスを一つ作って、gcroot でメンバを持たせたら?
>679
C++/CLI が無事完成するのを待て
ふつーのSTLや標準C++ライブラリしか使わないなら、マネージド拡張なしで作れば
いいんでない?
#pragma unmanaged 使ってさ
漏れ、boostをそれで使ってるよ
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGいいと思われ
このペースじゃ2005 Mid のWhidbeyリリースまでに1000逝かんでしょ
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGDictionary<String ^, data ^> ^dic = gcnew Dictionary<String ^, data ^>;
で作ったデータで、
String ^keyword = ...
dic->ContainsKey(keyword)
としたとき、データとして含まれているはずなのに引っかからないことがある
(´-`).。oO(なんでだろう?)
0685デフォルトの名無しさん
NGNG0686age
NGNGMicrosoft Visual C++ .Net 2003: Kick Start
http://www.amazon.co.jp/exec/obidos/ASIN/0672326000
を読むと何か参考になるかも。
0687wonapi
NGNGサンプル プログラムで動作を確認できる。
詳しくは、下の「WonAPI MRIMG32 トップページ」で最新情報をご確認を。
WonAPI MRIMG32 トップページ
http://f59.aaa.livedoor.jp/~wonapi/mrimg32/index.html
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG__gcの無いクラスからコールバックをするにはどうしたらいいのでしょうか?
0690デフォルトの名無しさん
NGNG・__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レスありがとーー!
試してみます。報告は後ほど
0692デフォルトの名無しさん
NGNGありがとうございました。
解決しそうです。
ちなみに何かいいMC++の書籍ありますか?
0693デフォルトの名無しさん
NGNGこんなの使ってる奴いるのか?
正気か?
0694デフォルトの名無しさん
NGNG使わざるえない時もあるってもんさヽ( `Д´)ノ
0695デフォルトの名無しさん
NGNG俺はMSDNだけで済ませてる。
あとは過去ログ参照
>>693
俺だってC#とか使いてぇよ…orz
まぁ、デフォのC++よりは幾分マシ
0696デフォルトの名無しさん
NGNGpublic:
__property ????? get_AddressList() { return aaa; }
__property void set_AddressList(????? value) { aaa = value; }
AAAクラスを配列で持ちたいので
こんな感じでプロパティを宣言したいのですが
うまくいきません。?????の所をどうしたらいいのでしょうか?
0697696
NGNGAAA* aaa[];
public:
__property AAA* get_AAAList()[] { return aaa; }
__property void set_AAAList(AAA* value[]) { aaa = value; }
こうでした。
う〜ん、それにしてもgetの時の[]の位置って普通わからないよなぁ
0698デフォルトの名無しさん
NGNGAAA* __gc[] だったかな。
0699デフォルトの名無しさん
NGNG戻り値をAAA*[]にして小一時間程悩むのは誰もが通る道だろうな。
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG070669式フリーPG ◆hND3Lufios
05/02/14 21:35:520707デフォルトの名無しさん
05/02/21 20:07:590708デフォルトの名無しさん
05/02/23 21:06:22何に表示したいんだ?
まあ、とりあえず、標準出力なら
Console.Write("{0:x}", num);
string.Format ってのもあり。
0709デフォルトの名無しさん
05/02/23 21:12:51C++/CLI だと
(3).ToString("X"); とか
0710デフォルトの名無しさん
05/02/25 16:00:380711707
05/02/25 20:45:330712デフォルトの名無しさん
05/03/09 13:29:18http://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"Generic Programming Under .NET"
http://msdn.microsoft.com/msdnmag/issues/05/04/PureC/
0714デフォルトの名無しさん
05/03/20 18:07:41日本語資料ならなんかGDNJで晒されてたぞ
0715デフォルトの名無しさん
05/03/20 19:35:34C++/CLI 言語仕様
http://www.stdblue.net/cgi-bin/vene/wiki/wiki.cgi
0716デフォルトの名無しさん
05/03/20 19:51:080717デフォルトの名無しさん
05/03/20 23:41:360718デフォルトの名無しさん
2005/03/21(月) 11:43:09CLR の事と間違えてんじゃねぇの?
まぁ、CodeDOMあるから、C++の実行時解釈もできるけど
0719デフォルトの名無しさん
2005/03/25(金) 22:46:04C++/CLIの追加機能の意味(というか用途)がわからんものが多いッス
genericsとtemplateの使い分けはどうするんだとか
interfaceは純粋仮想関数で事足りるんじゃねぇの?とか
0720デフォルトの名無しさん
2005/03/26(土) 02:42:13C++/CLI というから、C++に最低限の機能を追加したのかと思いきや、もう全然違う言語に感じます。
個人的には、ガベージコレクタだけで十分なんだが。(しかも、もっとシンプルな形で)
0721デフォルトの名無しさん
2005/03/26(土) 11:38:33ポインタとハンドル、ヒープと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への対応が強化された
って理解でいいのかな
0723デフォルトの名無しさん
2005/03/28(月) 00:34:090724デフォルトの名無しさん
2005/03/28(月) 21:31:570725デフォルトの名無しさん
2005/03/29(火) 16:59:420726デフォルトの名無しさん
2005/03/29(火) 18:28:010727デフォルトの名無しさん
2005/03/30(水) 02:25:04私はC++のポリシーの無さが限りなく心地よいのだが、それでも
確かに.netを用いた開発においてはC#の方がC++/CLIよりも開発
効率の点で勝っていることを認めざるを得ない。
0728デフォルトの名無しさん
2005/03/31(木) 06:16:09出来るとしたらそのときはmanagedC++使うんですか?
0729デフォルトの名無しさん
2005/03/31(木) 10:32:17D言語と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正式な仕様が公表されていないから、実際にどうなっているのかWhidbeyで動かして
見ないとわからんと言うのは問題だな
0731デフォルトの名無しさん
2005/04/10(日) 11:09:19でアップデートされたときから、サポートされてるよ。
http://www.microsoft.com/downloads/details.aspx?FamilyID=afd04ff1-9d16-439a-9a5e-e13eb0341923&displaylang=en
最初のバージョンとはかなり違って、公表されてる仕様に近くなってるから、
覚悟してアップデートするように。
0732デフォルトの名無しさん
2005/04/10(日) 12:04:05入れ直した憶えがある
構文が公開仕様に近いなら、試してみたいが・・・うーん
ファイナライザとか実装されてる?
0733デフォルトの名無しさん
2005/04/10(日) 17:02:26C#はもうJIS規格になったよ。見捨てられないね。
0734デフォルトの名無しさん
2005/04/17(日) 08:13:50まだ9x系使ってる人もいるからな…
0735デフォルトの名無しさん
2005/04/17(日) 08:51:22実現していますように
ところで、正式な仕様はまだ公開されないのかねぇ
0736デフォルトの名無しさん
2005/04/19(火) 10:56:18Express 版は一般向けに出てきた。
まあ、.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:49STL.NET はまだでしょう?
0738デフォルトの名無しさん
2005/04/20(水) 11:21:09・インデックスド・プロパティ:動作
・ファイナライザ:動作
・パラメータ配列:動作
・for each:動作
あとなんかあったっけ?
0739デフォルトの名無しさん
2005/04/20(水) 11:26:34コンストラクタでこうするヤシ
TestClazz() : _name(gcnew String(L"My Name")) { }
基本的な言語機能は出そろったのかな
0740デフォルトの名無しさん
2005/04/20(水) 12:21:150741デフォルトの名無しさん
2005/04/21(木) 13:49:57System::StringをLPSTRに変換したいのですが
どうしたらいいでしょうか?
0742デフォルトの名無しさん
2005/04/21(木) 14:11:22array<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大抵のAPIはいちいちMBCSへの変換をかますことなく、pin_ptr を渡せるので
そっちをお勧めする
0744デフォルトの名無しさん
2005/04/21(木) 17:28:14stdcli::languageを使うにはどうしたらいいのでしょうか?
using namespace stdcli::languageと書いたのですがダメでした
何を参照すればいいのでしょうか?
0745デフォルトの名無しさん
2005/04/21(木) 17:39:01Beta2 では pin_ptr や safe_cast, array<> は stdcli::language 宣言しなくても使えるように
なったよ。だから、逆に宣言してはいけない(はず)
0746デフォルトの名無しさん
2005/04/21(木) 17:48:23Beta2とかよくわからないです(´Д`;)
でも
array<wchar_t>^ arr = stringVal->ToArray();
を書いたら
error C2059: 構文エラー : '^'
error C2065: 'array' : 定義されていない識別子です。
ってエラーが出てしまいます。
0747デフォルトの名無しさん
2005/04/21(木) 17:59:31だったら、 >>615 なんだけど
0748デフォルトの名無しさん
2005/04/21(木) 18:03:41多分普通のmanaged C++ なのかなぁ
Microsoft Visual Studio .NET 2003を使ってます。
>>615を試した方がいいですかね?
できれば>>615を、もうすこし解説してもらえると助かります。
0749デフォルトの名無しさん
2005/04/21(木) 18:19:41managed C++ にはユーティリティ関数がいくつか用意されていて
#include <vcclr.h>
で使えるようになります。
あとは、
PtrToStringChars で System::String __gc * 型を LPCWSTR に変換して、それに
WideCharToMultiByte を実行するって手順になります
これでだいたい判るよね?
0750デフォルトの名無しさん
2005/04/21(木) 18:22:00ありがとうございます(^∀^ヾ|
なんとか出来そうな感じがしてきました
0751デフォルトの名無しさん
2005/04/21(木) 19:42:41ウォッチで中身が確認できないのですが
解決方法ないでしょうか?
*Microsoft Visual Studio .NET 2003を使ってます。
0752デフォルトの名無しさん
2005/04/22(金) 09:50:260753デフォルトの名無しさん
2005/04/22(金) 11:12:290754デフォルトの名無しさん
2005/04/22(金) 11:47:16よくあることなの?
デバッカーが使えないのはなんとも不自由だ(´Д`;)
がんばります
0755デフォルトの名無しさん
2005/04/25(月) 05:24:18今managedC++をやるべきか躊躇している。
0756デフォルトの名無しさん
2005/04/25(月) 08:43:22実装はMSしかやっていないわけで、当然、VisualStudio 2005 の出荷待ち
仕事で必要なんだったら、MC++をやる以外に選択肢はないんだが、勉強程度だったら
C++/CLIを押さえておく程度で問題はないんじゃないか
0757デフォルトの名無しさん
2005/05/07(土) 01:01:210758デフォルトの名無しさん
2005/05/07(土) 01:24:09文法を整えたのがC++/CLI
0759デフォルトの名無しさん
2005/05/07(土) 11:47:58public 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:330761デフォルトの名無しさん
2005/05/07(土) 16:31:000762デフォルトの名無しさん
2005/05/07(土) 17:53:13追加分があるだけ
0763デフォルトの名無しさん
2005/05/07(土) 18:03:220764デフォルトの名無しさん
2005/05/07(土) 18:37:30いや、MS から手に入る去年の6月版ドラフトには float, double も可能と書いてある
奴ら実装で手を抜きやがった
あ、いや、信じてるよ。正式リリース時にはちゃんと float や double も背景型に
指定できるって。__int64 まで対応しているから、エリア的には大丈夫なはずだし
0765デフォルトの名無しさん
2005/05/07(土) 20:20:02そりゃ、基本的な型だけでも参照型と値型の2種類。インターフェイスやデリゲート、属性も
増えてるんだから、文法にも手を入れないとキャストもできないだろ
0766デフォルトの名無しさん
2005/05/08(日) 18:09:550767デフォルトの名無しさん
2005/05/08(日) 22:10:30yes
ここで出てる C++/CLI の話は、全部 VS 2005 Beta での話
0768デフォルトの名無しさん
2005/05/08(日) 22:35:440769デフォルトの名無しさん
2005/05/10(火) 00:16:43こんな事書いてる
確かにその意見には同意するし、C++/CLIへの評価も判る
だが、なぜだろう。疫病神に取り憑かれたような気がするのは(w
0770デフォルトの名無しさん
2005/05/10(火) 16:49:060771デフォルトの名無しさん
2005/05/12(木) 16:09:53ttp://download.microsoft.com/download/9/9/c/99c65bcd-ac66-482e-8dc1-0e14cd1670cd/C++-CLI%20Standard.pdf
0772デフォルトの名無しさん
2005/05/24(火) 09:30:33C++のexportには対応してくれてるのかな?
0773デフォルトの名無しさん
2005/06/03(金) 17:34:04VS2005TSβ2、VC8で、共通言語ランタイムを有効にしてビルドした
ものを 実行しようとすると、必要なDLL が無いと怒られました。
手動で.NET Frameworkの該当するフォルダにパスを通せば動く
のですが、手でパス設定しなければならないものでしょうか?
(そんなこと無いと思うのですが)
今までネイティブしかやってないので、勝手がわかりません…
どなたかお願いします。
0774デフォルトの名無しさん
2005/06/03(金) 17:43:30printfなどのc/c++の関数使っているならいくら/CLRでコンパイルしても
呼び出されるDLLはネイティブのものだからパスが必要になる。
具体的にはどのDLLが無いと出たのか書かないと答えられんよ。
0775デフォルトの名無しさん
2005/06/03(金) 18:11:02返事ありがとう。
DLLはmsvcr80.dllでした(無記入スミマセン)
通したパスは
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
です。
printfは使っています。
0776773&775
2005/06/03(金) 18:14:56くだんのプログラムですが、共通言語ランタイムを無効にして
ビルド&実行したときには特に問題は無いです。
このことは、ネイティブなDLLへのパスは通っているという
解釈になりませんか?
0777デフォルトの名無しさん
2005/06/03(金) 18:18:070778デフォルトの名無しさん
2005/06/03(金) 18:35:28実行すると同じエラーが出るはず。
cl /MD xxx.cpp
msvcr80.dllはマルチスレッド対応のランタイムルーチン。シングルスレッドモードの場合は不要。
/CLRの場合常にマルチスレッド対応であることが要求されるため暗黙に/MDが付加される。
VC++6.0用のものは、c:\windows\system32\msvcrt.dll にあるからパスは不要なのだ。
リリース版になったらインストール時にwindows\system32にコピーされるようなるのだと思う。
0779773
2005/06/03(金) 19:06:01元のプログラムがマルチスレッドプログラムなので /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:52http://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いや、明示的に printf なんて使ってるからそれじゃ駄目だろう
>779
C ランタイム・ライブラリのBeta版をシステムに入れちゃいかんだろうさ
モジュールの横に置いたら?
0782デフォルトの名無しさん
2005/06/04(土) 00:21:47こちらのは前のバージョンなので違うのかもしれないが、
/clr のデフォルトは /MT になってるぞ。/MDは指定可能だが
/MLは不可になってる。/MTじゃエラーになるのかな?
/MT ならモジュールサイズはでかくなるがDLLは不要だ。
0783773
2005/06/04(土) 01:00:46msvcr80d.dll(デバッグ用?)のは知らない間にもう入ってました。
>>782
>/MTじゃエラーになるのかな?
β2だとコンパイルエラーになります。
0784773
2005/06/04(土) 01:24:33http://pc8.2ch.net/test/read.cgi/tech/1113305966/201-203
0785デフォルトの名無しさん
2005/06/04(土) 01:51:26サイドバイサイドか、いよいよWin2000は切捨てかのう。
0787デフォルトの名無しさん
2005/06/04(土) 20:27:42別に変わらんでしょ。COMのサイド×サイドがない振る舞いをするだけで
アセンブリのロードはCLRが管理するから、問題ないんじゃね?
0788デフォルトの名無しさん
2005/06/04(土) 21:06:110789773
2005/06/05(日) 06:30:55以下、勘違いでした。
>元のプログラムがマルチスレッドプログラムなので /MT を使って
>ビルドしています。 /MD 使ってビルドして実行したらハングするかも
/MLと勘違いしてた。 /MTを/MDにしてもハングする訳ないですね。
っていうか、VS2005って、/MLがなくなってるみたい。今気がついた…
スレ違いスミマセン
0790デフォルトの名無しさん
2005/06/05(日) 09:28:54DLL のロード順て、exe の位置が最優先でしょ
今まで通りサーチは PATH に従うだけで何か問題ある?
mfc の DLL とかと同じ扱いすればいいんじゃねぇの
0791デフォルトの名無しさん
2005/06/05(日) 14:47:380792デフォルトの名無しさん
2005/06/05(日) 15:53:27アホか
0793デフォルトの名無しさん
2005/06/05(日) 16:58:37MSDN の LoadLibrary には
1.アプリケーションのロード元ディレクトリ。
2.現在のディレクトリ。
3.Windows System ディレクトリ。32->16
4.Windows ディレクトリ。
5.PATH 環境変数にリストされたディレクトリ。
と、書かれているが違うの?
0794デフォルトの名無しさん
2005/06/05(日) 17:35:471)普通の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だから、2kだと変わらんよね? msvc80.dll はネイティブだから exe の位置に置けば
特に変わらないよと逝っているんだが、なんで漏れが否定されているのかよく分からない(´・ω・`)
0796デフォルトの名無しさん
2005/06/05(日) 18:10:59> DLL のロード順て、exe の位置が最優先でしょ
のDLLの部分がmsvc80.dllを指しているのか、DLL一般のことを言ってるのか
区別がつきづらかったのだと思うが、>>792が脳髄反射で反応してるのは確かだ。
0797デフォルトの名無しさん
2005/06/05(日) 21:09:41まったくこれだからカスどもは
0798デフォルトの名無しさん
2005/06/05(日) 21:17:400799デフォルトの名無しさん
2005/06/12(日) 14:56:07すべて *.h に書くのが普通なのでしょうか?
(そもそも定義部と実装コードは分けられないようですが)
VS2005を使うと*.hにコードがあり、#includeだけの*.cppが生成されます。
全部*.cppに書いても問題ないような気がしますがどうなのでしょうか。
0800デフォルトの名無しさん
2005/06/12(日) 16:25:02事情がない限りは.hに書いたほうがいいんじゃね?
0801デフォルトの名無しさん
2005/06/12(日) 17:22:050802デフォルトの名無しさん
2005/06/13(月) 00:51:540803デフォルトの名無しさん
2005/06/13(月) 08:19:040804799
2005/06/13(月) 15:36:41の部分は誤りでした。実装コード側に定義部と同じnamespaceをつけるのを忘れて
エラーが出ていました。C++クラスのテンプレートから作成した場合 802さんの
おっしゃるとおりインラインかどうかを選択できました。
普通のC++のクラスでインラインを多用するとロードモジュールのサイズが
肥大化するので心配していたのですが、Managedクラスの場合はそういう問題は
起きないようで、インラインか否かは表記上の問題で生成されるロードモジュール
に違いはでないようです。
0805デフォルトの名無しさん
2005/06/19(日) 00:42:350806デフォルトの名無しさん
2005/06/19(日) 01:03:09しーぷらぷらしーえるあい?
0807デフォルトの名無しさん
2005/06/19(日) 15:01:230808デフォルトの名無しさん
2005/06/19(日) 15:33:530809デフォルトの名無しさん
2005/06/21(火) 21:56:27C++: .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何か後半中部の訳が変じゃない?(前半部と最後は良かったんだが...
>難解で洗練されていない構文を使用すると、開発プロセスにおける危険性が増大します。これは、フロントガラスの汚れや煙が自動車事故の危険性を高めるのと同じです。改訂されたデザインでは、磨き上げられた新品のフロントガラス並みに構文の透明性が向上しています。
ワロタ
>構文糖
>??
>const char* インスタンスに解決されていた解決が、あいまいとしてフラグされるようになりました。
>コンパイル時間ダウンキャスト
0812デフォルトの名無しさん
2005/06/24(金) 23:51:57シンタックスシュガー
0813デフォルトの名無しさん
2005/06/25(土) 02:22:060814デフォルトの名無しさん
2005/06/25(土) 02:27:14うち何件か企画はあったんだけど検討の結果全部C#になりました。
0815デフォルトの名無しさん
2005/06/25(土) 02:31:00メインとしてはとても使えないけど、旧来のルーチンをラップするにはベターな選択だ
0816デフォルトの名無しさん
2005/06/25(土) 15:11:050817デフォルトの名無しさん
2005/06/25(土) 19:54:450818デフォルトの名無しさん
2005/06/27(月) 13:05:030819デフォルトの名無しさん
2005/06/27(月) 17:48:00標準C++と変わらない
今までの STL はネイティブに対しては今まで通り使えるし、ref 型とかは STL.NETが
用意される
0820デフォルトの名無しさん
2005/06/28(火) 23:23:47Boostは使えるん?
0821デフォルトの名無しさん
2005/06/28(火) 23:33:40spilit でパーサ使ってるが?
アセンブリという概念が組み込まれてるので、テンプレートはちょっと実用範囲が低下するが
アセンブリ内なら普通に使える
ヘッダ取り込みなんて無様な真似はアセンブリ内で閉じておけと
0822デフォルトの名無しさん
2005/06/28(火) 23:34:250823デフォルトの名無しさん
2005/06/29(水) 12:29:16LPARAM に this ポインタを渡したいのですが、方法がわかりません。
こういうことはできない、またはすべきでなかったりするのでしょうか?
0824デフォルトの名無しさん
2005/06/30(木) 00:03:34EnumWindows(&func, current);
で駄目なん?
0825デフォルトの名無しさん
2005/06/30(木) 01:09:37ref 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:52A* a = reinterpret_cast<A*>(lp); を
A^ a = interior_ptr<A>(lp);
では?
まぁ、ネイティブのワーククラス作った方が簡単だと思うんだけど
0827デフォルトの名無しさん
2005/06/30(木) 01:32:57interior_ptr<A> a = lp;
だね
0828デフォルトの名無しさん
2005/06/30(木) 15:23:58interior_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:57ref class 内で、windows.h などにある unmanaged の構造体を
メンバにしようとすると、コンパイルエラーになってしまいますが
こういうときは ref なしの class を作ってやるしかないのでしょうか
0830デフォルトの名無しさん
2005/07/11(月) 16:13:57こんな感じのユーザコントロール作って、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ポインタを使えばいけるんじゃないかな?
C++/CLI使ってないから見当はずれかもしれないけど
0832デフォルトの名無しさん
2005/07/11(月) 18:51:330833デフォルトの名無しさん
2005/07/11(月) 19:10:44> だったら答えるなよ
> だったら答えるなよ
> だったら答えるなよ
0834デフォルトの名無しさん
2005/07/11(月) 19:30:47その通りです。そういったクラスは混合型と呼ばれ、将来拡張予定の機能です。
それまでは、別に管理クラスを作るか >831 の言う通り、IntPtrに new して
持たせてください
0835デフォルトの名無しさん
2005/07/11(月) 19:44:01gcroot<COMEvent*> m_control が null 値なんじゃね?
いつ作ってんの?
0837デフォルトの名無しさん
2005/07/11(月) 20:35:18>835 は間違えた。忘れてくり。
EventDelegate * の OnEvent はどこで生成してるの?
0838デフォルトの名無しさん
2005/07/11(月) 20:37:37追加ですが、.Net Framework 2.0 では IntPtr に加えてリファレンスカウンタなどの Ptr 型が
増えているので、それらを利用するのも手だと思われます
System::Marshal 周りを探してみてください
0839850
2005/07/12(火) 01:53:55このUserControlを使うC#コードで生成してます
inst.OnEvent+=new EventDelegate(hoge);
inst.FireEvent();
と書いてみるとここではちゃんと動くんですよね
その後に発生するCOMイベントから
CEvents::OnEvent()経由でFireEvent()がよばれて、そこだとうまくいかないんです
今ソースないので試せませんが純粋仮想関数でも似た結果だったような
0840デフォルトの名無しさん
2005/07/12(火) 10:58:35となると、やっぱり、m_control に値が入っていないような気がするんだけど、これって
どの段階で生成されるオブジェクトなの?
gcroot は非マネージド・オブジェクトがマネージド・オブジェクトを保持するエリアだよね
だから、どこかで COMEvent のインスタンスが渡されていないといけないんだけど
0841850
2005/07/12(火) 13:21:34たしかにm_controlに値を入れるメソッドを作るのは後回しにしたままでした
m_controlに値が入ってなければm_control->FireEvent();
の時点で失敗するだろうという思い込みが原因でした
ありがとうございました
0842デフォルトの名無しさん
2005/08/18(木) 21:41:58vector<string^>^ a(gcnew vector<string^>^);
微妙な顔文字に見えてきて、微妙。
0843デフォルトの名無しさん
2005/08/19(金) 00:23:03そういわれたら顔文字にしか見えなくなってきたじゃないか
0844デフォルトの名無しさん
2005/08/20(土) 12:50:330845デフォルトの名無しさん
2005/08/20(土) 23:57:27入れるとややこしいのが出てくるとついていけない様な感じがして
これから先のC++の印象が…。C#に逃げてしまいそう。
なんかいいH.P.ありませんか?
0846デフォルトの名無しさん
2005/08/21(日) 00:37:53ジェネリクスと無名関数オブジェクトがついた以上
C++をあえて使う意味は無くなったよ。
0847デフォルトの名無しさん
2005/08/22(月) 13:06:05C++よりもマイナーC丼にふさわしい形容。
0848デフォルトの名無しさん
2005/08/26(金) 15:32:020849デフォルトの名無しさん
2005/08/26(金) 21:41:440850デフォルトの名無しさん
2005/08/26(金) 21:59:15boost::lambda(・∀・)イイ!!
0851デフォルトの名無しさん
2005/08/26(金) 22:15:310852デフォルトの名無しさん
2005/08/26(金) 22:27:55そんな色物いらん
ただのシンタックス・シュガーで充分だから、匿名デリゲートがある方がいい
単純な比較やソートに使うだけだから
0853デフォルトの名無しさん
2005/08/26(金) 23:17:04全然追いつけないぉ
0854デフォルトの名無しさん
2005/10/06(木) 20:26:060855デフォルトの名無しさん
2005/10/08(土) 15:13:430856デフォルトの名無しさん
2005/10/08(土) 15:22:31>>854
実際どうか、試してみないと何とも言えんから、自分でやれ
0857デフォルトの名無しさん
2005/10/22(土) 11:58:51今度C++(学校にある環境はvc++ ver6)を勉強することになりました。
vs.net2003で選べるc++とvc++ ver6のc++って全然別物なのでしょうか?
それとも家でvs.netでc++やっても勉強になるんでしょうか?
0858デフォルトの名無しさん
2005/10/22(土) 12:52:22managed じゃなければいっしょ。
vs.net の c++ でも、managed を選ばなければ、vc6といっしょだよ。
0859デフォルトの名無しさん
2005/10/22(土) 13:11:00やったことないけど、プロジェクトのコンソールアプリでファイル名.cppにしてもWIN32API使えるんですか?
自分では、プロジェクトでコンソールアプリで.cならC言語、.cppならC++、
WIN32アプリやMFCならVCだという頭があったけど。
0860デフォルトの名無しさん
2005/10/22(土) 14:40:06全然使える。
超使ってる。
0861デフォルトの名無しさん
2005/10/22(土) 21:30:500862デフォルトの名無しさん
2005/11/17(木) 04:14:43managedな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:340864デフォルトの名無しさん
2005/11/17(木) 15:10:300865デフォルトの名無しさん
2005/11/17(木) 16:23:34>__gc class mgd {
先頭にpublicが抜けてるだけでは。
LNK4243の問題が無ければP/Invokeよりこっちを使いたいよ。
0867デフォルトの名無しさん
2005/11/17(木) 18:33:29C#やってた人が同居していちゃいちゃするの
0868862
2005/11/17(木) 23:43:12無事dll化することができました。
LNK4243の警告は出ましたが、とりあえずは使えるようなので今はそのまま使っています。
下記に参考になる情報が載っているようなので、もうすこし頑張ってみます。
返答、ありがとうございました。
ttp://support.microsoft.com/?id=814472
ttp://blog.windy.ac/managed_c/
0869デフォルトの名無しさん
2005/12/04(日) 21:40:47CHOCOAの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:370871デフォルトの名無しさん
2005/12/04(日) 22:10:34つーかよ、それCOMとして登録されているDLLとInteropに追加したDLLが別もんなんでね?
参照で追加するとき、レジストリに登録されているCOMを指定してやったら?
0872デフォルトの名無しさん
2005/12/04(日) 22:26:12えっと、その辺がよく分からんのです。。
正直言って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の一覧の中から、CHOCOAを指定してやったらどう?
どうも、そのタイプライブラリと、登録されているGUIDが一致してないようにしか
見えないんだけど
0874デフォルトの名無しさん
2005/12/04(日) 22:58:57私も原因はGUIDの不一致だと思います。
で、そこのCOMの一覧にChocoaLibっていうのがあるんですが、
それを選択すると↑で言ったようになってしまうんです。。
0875デフォルトの名無しさん
2005/12/04(日) 23:08:11あったような気がするけど気のせいかもしれない。
tlbimp hoge.exe /out:hogeexe.dll とかしてinteropアッセンブリを手動で作ってみては?
0876デフォルトの名無しさん
2005/12/04(日) 23:38:38ありがとうございます。ただ、やってみたところエラーでした。
>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何度もご返事くださった方、ありがとうございました。
これはタイプライブラリの生成時がアレだったということなのかなあ。。
0878デフォルトの名無しさん
2005/12/09(金) 17:16:46基本的には機嫌良く動いているのですが、同じクラスライブラリ内のクラスを
継承した派生クラスでデストラクタを記述しようとするとエラーが出ます。
継承関係のないクラスのデストラクタは成功します。
中身を空にしたりvirtual や void を付けたり取ったりしても同じです。
また普通にFormのプロジェクト内で作成したクラスの継承では問題ありません。
error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void
(__thiscall*)(void *),void *)"
(?__CxxCallUnwindDtor@@・・・・)" は未解決です。
クラスライブラリ内で継承したクラスにデストラクタをつけるにはどうしたらいいでしょうか?
0879878
2005/12/12(月) 23:42:310880デフォルトの名無しさん
2005/12/13(火) 09:03:18簡単なアプリでも起こせるの?
0881878
2005/12/14(水) 17:26:38えっと、肝心なことが漏れてたのですが、__gcクラスのデストラクタでエラーが出ます。
__gcをとるとエラーはなくなります。
↓これでエラー再現しました。(クラスライブラリ(.NET)にて)
// test.h
#pragma once
using namespace System;
namespace test
{
public __gc class Class1
{
public:
~Class1(){;}
};
public __gc class Class2 : public Class1
{
public:
~Class2(){;}
};
}
0882デフォルトの名無しさん
2005/12/14(水) 22:35:49うーん・・・。手元の環境に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:22http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconusingcdestructorsyntax.asp
0884878
2005/12/15(木) 02:27:16>>883
こんなのもあったりで、なにがなんやら・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmxspec/html/vcmanagedextensionsspec_4_2.asp
それから、新展開がありまして、クラスライブラリ作成時に自動的に作成されるcppファイルをはずすか、
cppの中の #include "test.h" をはずせば何とかリンクが通るようです。
しかし、cppにソース書くなら#include をはずせないし。
実装はすべてヘッダファイルへ、ってことでしょうか。
そういう通例があるというのもどっかで聞いたことがあるような無いような・・
0885デフォルトの名無しさん
2005/12/15(木) 12:15:01VC++では実装はヘッダーファイルに書くことが多いのでしょうか?
クラスライブラリかWindowsフォーム(.NET)か
によっても違うのかもしれませんが。。
0886デフォルトの名無しさん
2005/12/15(木) 12:46:19名前は忘れたけど。
0887デフォルトの名無しさん
2005/12/15(木) 13:47:04メソッド増やして実装を入れたらコンパイルできるようになった気がする
0888デフォルトの名無しさん
2005/12/15(木) 13:50:25STLなんかは全部ヘッダーなんでわ?
>イディオムが存在する。 名前は忘れたけど。
名前があるのは知らなかった。知りたいお。
0889デフォルトの名無しさん
2005/12/15(木) 16:25:47>STLなんかは全部ヘッダーなんでわ?
違うよ。C++用のlibファイルが存在する時点で気づこう。
0890デフォルトの名無しさん
2005/12/15(木) 21:54:22iostreamとかlocale関係はたしかにlibファイルが使われているだろうが,
俺が一般的だと思う意味でのSTLの部分はヘッダに全て実装されている。
(コンテナ・アルゴリズム・イテレータ・関数オブジェクトなど)
0891デフォルトの名無しさん
2005/12/15(木) 22:22:070892デフォルトの名無しさん
2005/12/15(木) 22:32:13WTLは全部ヘッダーだ
0893デフォルトの名無しさん
2005/12/15(木) 22:32:390894デフォルトの名無しさん
2005/12/15(木) 22:51:110895デフォルトの名無しさん
2005/12/15(木) 22:54:120896デフォルトの名無しさん
2005/12/16(金) 01:00:48SGIのオリジナルSTLはそうだね。
STLportやgccのlibstdc++のSTL部分は*.cもある。
0897デフォルトの名無しさん
2005/12/16(金) 08:50:20でも、自分のソースは.hに全部入れると読み難い。
0898デフォルトの名無しさん
2005/12/16(金) 11:40:53じゃ、hファイルに書くかcppファイルに書くかって
どこらへんで判断してるのでしょう。。
簡単には切り分けられない?
0899デフォルトの名無しさん
2005/12/16(金) 13:06:12言語仕様的には.hに書くのが推奨なんだろうけど。
0900デフォルトの名無しさん
2005/12/16(金) 13:35:57本当にそう思うなら、C++のlibとリンクせずにvectorを使ってみてくれ。
0901デフォルトの名無しさん
2005/12/16(金) 13:51:49>>900
C++の文法から逝って論理的に可能。
だからといって、わざわざレスするためにテストしる!というのは如何なものかと。
0902デフォルトの名無しさん
2005/12/16(金) 14:32:18結論からいうよ。無理なんだよ。
メモリのアロケーションに関する部分がライブラリ依存なの。
「論理的に可能」とか意味不明なこと書くな。
論理的って何だ?まずは、そこから教えろ。
0903デフォルトの名無しさん
2005/12/16(金) 15:11:36STLがcppも必要だとは如何なものかと。
0904デフォルトの名無しさん
2005/12/16(金) 15:15:330905デフォルトの名無しさん
2005/12/16(金) 17:00:15言語仕様的には.hにすべて書くのが「推奨」なのでしょうか?
0906デフォルトの名無しさん
2005/12/16(金) 17:14:17実際に試してみたらたしかに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:14libstdc++なんかはかなり恣意的。基準があるとは到底思えない。
自分は全部.hに書く流儀。
別途プロトタイプ宣言書くのが面倒と言うだけの理由。
最初にオリジナルSTLを見たときはかなりビビッた。
あんな大きいクラスライブラリで全部.hなのは始めてみたので。
けど今は心配するのはよして、.hを愛するようになった。
0908デフォルトの名無しさん
2005/12/17(土) 12:11:460909デフォルトの名無しさん
2006/01/05(木) 17:44:020910デフォルトの名無しさん
2006/01/06(金) 05:03:53VC++用に書いたclassがMC++から呼び出せる。
具体例はヘルプにすんごく分かりやすいサンプルが載ってるからそれを見るべし。
0911デフォルトの名無しさん
2006/01/06(金) 09:45:070912デフォルトの名無しさん
2006/02/04(土) 18:04:19http://pc8.2ch.net/test/read.cgi/tech/1139043535/l50
0913デフォルトの名無しさん
2006/02/04(土) 20:34:32ということで、やっとこさっとこ、.Net2003に移行。いままで、V6だったからなぁ…。
manage C++ に初挑戦ですよ。
0914デフォルトの名無しさん
2006/02/04(土) 20:40:11悪いことは言わん、VS2005に上げてC++/CLIに取り組め。
0915デフォルトの名無しさん
2006/02/04(土) 23:51:53なんで?
それって、説得できる情報がないと、みんな動いてくれないんだよね。
出たばかりだと情報も少ない事が分かってるからね。バグもしかり。
納得できる回答を望む。
0916デフォルトの名無しさん
2006/02/05(日) 00:01:01納得できる回答を望む。
0917デフォルトの名無しさん
2006/02/05(日) 01:32:04>.Net 2005は出たばっかだから、業務にはちょっと…。
回答は出てるだろ?
0918デフォルトの名無しさん
2006/02/05(日) 07:25:06managed C++の欠点。
キーワードが下線ばかりで汚い。
デストラクタの発動がC#と同じGCされるとき。
マネージオブジェクトはnewしないと作れない。
マネージオブジェクトに対して演算子多重定義が使えない。
0919デフォルトの名無しさん
2006/02/05(日) 21:23:27つまり、言語仕様が少し古い…と言うことなだけか? CLIの方が洗練されていると言うだけ?
コード書くだけがプロジェクトじゃないから、そんなことはとても些細なことだな。
そんな答えで、納得できるヤツはバイト君ぐらいなモンだ。
出直せ。
0920デフォルトの名無しさん
2006/02/06(月) 01:36:32Managed C++はいつ切り捨てられるかわからない言語
0921デフォルトの名無しさん
2006/02/06(月) 01:43:36つーか、まだVC6が現役なところも変えず多くあるんだぞ?
少なくとも、サービスパックが複数出てからじゃないと C++/CLIには移行できないよ。
0922デフォルトの名無しさん
2006/02/06(月) 03:06:44C++/CLIが枯れるまでVC++6.0でいいじゃない。
0923デフォルトの名無しさん
2006/02/06(月) 08:23:15> 切り捨てられても、.Net2004を使っていれば問題ない。
なんて良く言えるね。どっちも調査だけで業務はスルーしとけよ。
0924デフォルトの名無しさん
2006/02/06(月) 13:08:58.Netはライブラリとして、多機能。
話を誤解してるな。
.Net2004でクオリティをクリアしたアプリをメンテナンスするには.Net2004を使い続ければよい。
ということだ。
バグフィックスされることより、バグを避けられることが重要。
その点、manage C++ は情報がある。
managed C++にバグがあったとしても、できあがった製品のクオリティと運用に問題がなければ、
そのバグは存在しようがしまいが、問題ない。
0925デフォルトの名無しさん
2006/02/06(月) 18:47:190926デフォルトの名無しさん
2006/02/06(月) 19:10:590927デフォルトの名無しさん
2006/02/06(月) 19:44:460928デフォルトの名無しさん
2006/02/06(月) 19:45:540929デフォルトの名無しさん
2006/02/06(月) 20:00:580930デフォルトの名無しさん
2006/02/07(火) 12:38:57池沼は無視
0931デフォルトの名無しさん
2006/02/09(木) 11:44:020932デフォルトの名無しさん
2006/02/09(木) 16:48:00参照設定(#usingやプロジェクトのプロパティから)
0933デフォルトの名無しさん
2006/02/09(木) 22:09:270934デフォルトの名無しさん
2006/02/14(火) 22:42:330935デフォルトの名無しさん
2006/02/15(水) 04:52:18んじゃ、unmanage C++からは?
0936デフォルトの名無しさん
2006/02/19(日) 08:08:350937デフォルトの名無しさん
2006/02/20(月) 18:53:23めんどくさそうだな? 簡単か?
0938デフォルトの名無しさん
2006/02/21(火) 17:49:050939デフォルトの名無しさん
2006/02/21(火) 19:15:19しかし、C#側でメモリマネージャから特別扱いしてもらうような、指定は出来ねーのか?
0940デフォルトの名無しさん
2006/02/21(火) 21:19:140941デフォルトの名無しさん
2006/02/23(木) 00:02:15やっぱCOMでしょ
0942デフォルトの名無しさん
2006/03/01(水) 14:15:350943デフォルトの名無しさん
2006/03/01(水) 14:54:490944デフォルトの名無しさん
2006/03/01(水) 16:31:57今はまた、2003が正解。
0945デフォルトの名無しさん
2006/03/01(水) 23:05:02それ名言じゃん!
0946デフォルトの名無しさん
2006/03/02(木) 00:01:120947デフォルトの名無しさん
2006/03/02(木) 08:36:100948デフォルトの名無しさん
2006/03/03(金) 22:35:090949デフォルトの名無しさん
2006/03/04(土) 04:35:54おかげで…。Toolkitは最悪だったんじゃないかと想像。
0950デフォルトの名無しさん
2006/03/04(土) 04:47:170951デフォルトの名無しさん
2006/03/04(土) 08:57:30何を根拠に?
0952デフォルトの名無しさん
2006/03/05(日) 23:11:180953デフォルトの名無しさん
2006/03/15(水) 00:02:20ライブラリはいいぞ
0954デフォルトの名無しさん
2006/03/15(水) 08:52:20とんでもMFC使わされてたやつとかブビチュウが良いものと思うだけで別にふつー。
0955デフォルトの名無しさん
2006/03/15(水) 08:55:480956デフォルトの名無しさん
2006/03/15(水) 10:55:08managedは遅いから極力使わないようにしてるし。
0957http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:23:11もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0958デフォルトの名無しさん
2006/03/18(土) 22:07:180959878
2006/04/20(木) 00:35:35実装するとリンクエラーがでてビルドできない現象がようやく解決しました。
結論から申しますと msvcrt.lib をリンクすることで解決しました。
実は、半年近くデストラクタはあきらめた状態でいたのですが、
今度は new や delete でも 未解決シンボル のリンクエラーが出て
再度調べたところ、msvcrt.libにたどり着き、これで、デストラクタも
解決できてしまいました。
ちなみに ヘッダファイルにすべて実装する、というのは見当違いでした。
0960デフォルトの名無しさん
2006/06/13(火) 01:33:51とあるプロジェクト内で、サブのForm Classを新規作成したのですが、名前空間を
入れ子にするとデザイナでエラーが出てフォームが表示されなくなります。
(このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした)
コンパイル/リンクは問題なく行われ、実行時のエラーも出ずに、作成したFormを表示もできます。
デザイナの問題と思われます。
これを回避できる策に心当たりある方がおられましたら、ご教示願います。
0961960
2006/06/13(火) 01:39:42namespaceを入れ子にしなければ、名前を変更しても
デザイナで表示もできるのです。
namespace AAA{
namespace BBB{
public __gc class Test : public System::Windows::Forms::Form
{
(略)
};
}
}
0962humi
2006/07/14(金) 10:43:26値が入ってないとき「未定義の値」と表示。値が入って無い場合の
チェック文をそのまま素通りしてしまう。この場合の対処策を
ご教授願います。以下にそのコードの内容を書いておきます。
string[][] st = new string[][];
st = new string[10][];
この後、ループで各要素にメモリーを持たせ、値を入れる。
値が入ってないかを見る条件分は以下の通り。
if(st[i][y] != null && st[i][y] != "")
ふみぱいんより。
0963デフォルトの名無しさん
2006/07/14(金) 11:49:02>私は今C#でプログラムをしています。
日本語が不自由な方のようですが、ここはその質問に適当な場所ではありません。他をあたりましょう。
0964デフォルトの名無しさん
2006/07/14(金) 12:00:30日本語の不自由な方っぽいけど、誘導先も書いてあげようよ。
C# と Managed C++ は別。C# でスレ検索かけろ、くらいでいいから。
0965デフォルトの名無しさん
2006/07/14(金) 12:08:170966デフォルトの名無しさん
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:060968デフォルトの名無しさん
2006/07/21(金) 08:16:08#define E(s) #s
E(C:\hoge\) + fileName + ".txt"
0969デフォルトの名無しさん
2006/07/21(金) 11:13:40単純に"C:\hoge\" と展開されるので
>warning C4129: 'h' : エスケープ シーケンスとして正しく認識されませんでした。
が出る。
0970デフォルトの名無しさん
2006/07/23(日) 00:27:05@"..." もサポートされてないし、>968もうまく動作しないけど。
0971968
2006/07/23(日) 00:54:38\とかもエスケープしてくれるもんだと思っていた。
パスの区切りなら「大抵」スラッシュでもいけるからそっちへ逃げる方向で勘弁して。
レス数が950を超えています。1000を超えると書き込みができなくなります。