[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 17:12 / Filesize : 240 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

【.NET】 C++/CLI について語ろうぜ 【最適】



1 名前:デフォルトの名無しさん [2005/09/11(日) 23:54:01 ]
おそらく、.NET開発でデファクトスタンダードに最も近い
であろうC++/CLIについて語ろうぜ!

415 名前:デフォルトの名無しさん mailto:sage [2005/12/28(水) 10:29:47 ]
VB.NET のPGで、構文解析を行う必要が出たときに、
C++/CLI で boost.spirit 使って手軽に構文解析モジュール作成して、
VB.NET から参照設定で呼び出す

ってことが簡単に出来るならすばらしいことだと思うよ。


416 名前:デフォルトの名無しさん mailto:sage [2005/12/28(水) 10:32:23 ]
マルチランゲージは素晴らしい。

現実はJ#は開封もされない事実。
ブビ厨はC貧を嫌い、C貧はブビ厨を嫌う。

M$の理想は宣伝専用。

417 名前:デフォルトの名無しさん mailto:sage [2005/12/29(木) 00:42:11 ]
>415
普通にできるけど?

418 名前:デフォルトの名無しさん mailto:sage [2005/12/29(木) 05:23:34 ]
C#で以下のようなコードを
using (FileStream fs = new FileStream("test.txt", FileMode.Read)) {
}

C++/CLIでうまくかけるんですか?
FileStreamをスタックみたいにして作れると思ったんですが、できないのでしょうか?

419 名前:418 mailto:sage [2005/12/29(木) 05:25:15 ]
すいません。できました。ぜんぜんわかってませんでした。

420 名前:デフォルトの名無しさん mailto:sage [2005/12/29(木) 17:16:57 ]
>414
入門するようなもんじゃねぇだろ?
C# を先に勉強した方がいいぞ

421 名前:デフォルトの名無しさん mailto:sage [2005/12/29(木) 20:22:02 ]
このスレでC#を勧めるのはどうかと思う。

422 名前:デフォルトの名無しさん mailto:sage [2005/12/30(金) 00:13:58 ]
そうか? 基本的にC++/CLIのターゲットは、今までC++をやってきた連中が .net
Framework を自由に使えるようにと言うことだろ
表面的な文法なら、ref や generics にプロパティ、delegate ぐらいしか増えないわけで
今までC++をやっていたのであれば、それほど大した変更じゃない
問題なのは、.net Framework を使えるか、それをC++/CLIではどのように融合させたのか
という点だから、それは入門じゃないだろ。C# の入門書見て、C++/CLI の構文での使い方を
知れば、十分なんじゃねえかと思われ

ダイレクトに C++ を知らずに、C++/CLI に手を出すのは、止めた方がいいだろ

423 名前:デフォルトの名無しさん mailto:sage [2005/12/31(土) 08:04:27 ]
>>422の言ってることは確かに理解できるし、俺もほとんど同意だが。
ここはC++/CLIについて語るスレなんだよなw

でもマジレスすると、入門サイトありますか?とか聞くようなレベルなら
さっさとC#かVBで始めたほうがいいと思う。




424 名前:デフォルトの名無しさん mailto:sage [2005/12/31(土) 13:05:55 ]
_asm{} とか書いたらどうなるんだ?って思ってやってみたら、
さすがに main() の中に書いたら怒られた。
関数単位でマネージド、アンマネージドが切り替わるんだね。
_asm{} 入りの関数はネイティブコードとして生成されるみたい。
その呼び出しをうまい具合にやってくれるのがいいね。
いや、C++/CLI で _asm{} 使うような機会があるかどうかは別として。

425 名前:デフォルトの名無しさん mailto:sage [2005/12/31(土) 14:20:04 ]
>424
C++/CLI の拡張構文ではグローバルな関数の存在を認めていない
だから、ただ関数を生成しただけでは、基本的にネイティブとしてコンパイルされる
はずだよ。main はさすがに扱いが違うけど

426 名前:デフォルトの名無しさん mailto:sage [2005/12/31(土) 15:09:22 ]
ふと思ったんだが boost on C++/CLI なんて可能だろうか。
ていうか、だったら素直に .NET Framework にある
便利クラス使えよって気もするが。

427 名前:デフォルトの名無しさん mailto:sage [2005/12/31(土) 16:19:01 ]
アセンブリ内で閉じてるなら平気だろ
CLI 拡張部を使わなければ、標準のC++であることが C++/CLI の設計コンセプトなんだから
できない理由はない。聞く前にやれば?

428 名前:デフォルトの名無しさん [2006/01/01(日) 00:43:38 ]
if ( DialogResult::OK != openFileDialog1->ShowDialog(this) )
return;

コンパイルできません><
t:\dev\www\winform\winform\Form1.h(154) : error C2039: 'OK' : 'System::Windows::Forms::Form::DialogResult' のメンバではありません。
t:\dev\www\winform\winform\Form1.h(23) : 'System::Windows::Forms::Form::DialogResult' の宣言を確認してください。
t:\dev\www\winform\winform\Form1.h(154) : error C2065: 'OK' : 定義されていない識別子です。
ビルドログは "file://t:\DEV\WWW\winform\winform\Debug\BuildLog.htm" に保存されました。
winform - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

429 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 00:46:55 ]
if ( Windows::Forms::DialogResult::OK != openFileDialog1->ShowDialog(this) )
return;

こうしました><

430 名前:デフォルトの名無しさん [2006/01/01(日) 01:19:56 ]
C++/CLIやりたいやつが入門サイトを希望するなんて
ギャグ以外の何者でもないだろ。


431 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 12:25:43 ]
CLIマッシーンってどんな環境を目指しているの?
そのうち出るかもしれない3DのUIとか検索ベースのFSまでのつなぎかな??

432 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 13:21:49 ]
いつかでるLISPマシンまでの繋ぎです

433 名前:デフォルトの名無しさん [2006/01/01(日) 15:25:53 ]
>C++復権すると思う?

それ以前にC++ってメジャーだったっけ?



434 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 19:16:48 ]
>433
どっかの記事では1990年代は優勢とか、書いてあったな。

435 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 21:07:00 ]
C++/CLIのライブラリは .NET のライブラリをそのままISO標準にするの??
以前のライブラリを使えるのはいいけど、できればGCで楽したいなー。

436 名前:デフォルトの名無しさん [2006/01/01(日) 21:58:51 ]
1990年代の段階ではC言語の仕事ばっかりやらされていたな。

437 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 22:49:23 ]
>>433
Java/C#なんかが出てくる前は優勢だったと言えるだろう。
ただしベターCとしてしか使われなかった割合も大きかっただろうが。

438 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 23:37:51 ]
delegateとeventの違いがわかりません。
delegateだけでいいような気がするのですが。。。

eventが存在する理由を教えてほしいです。

439 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 23:40:52 ]
delegateを簡単に扱うため

440 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 23:46:17 ]
>>439
センセー!簡単になる場面が思いつきません><

441 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 23:52:42 ]
event なら delegate の呼び出しが外から出来ないでしょ

442 名前:デフォルトの名無しさん mailto:sage [2006/01/01(日) 23:53:11 ]
>>440
うるせーな。少しは自分で考えろ。
delegateは関数オブジェクトの取り扱いの簡便化ため。
eventはdelegateの呼び出しの簡便化のため

443 名前:デフォルトの名無しさん mailto:sage [2006/01/02(月) 14:27:27 ]
>>438
つか比較すること自体が変だ。
delegateは型、eventはメンバ。class(型)とメンバの違いが分かりませんって
言われたってこっちが説明に困るよ。




444 名前:440 mailto:sage [2006/01/02(月) 23:54:45 ]
>>441
そこらへんが答えだと思うんですが、まだよくわかりません。

>>442
>eventはdelegateの呼び出しの簡便化のため

>delegateはdelegateの呼び出しの簡便化のため
でもいいとおもうんです。eventなど持ち込まなくてもできると思うんです。

>>443
例えば、
public delegate void LogHandler(string message);
public event LogHandler Log;


public delegate void LogHandler(string message);
public LogHandler Log;

と書いても動くと思うんです。

まだ.NET初心者なのではずしてるかもしれませんが。

445 名前:440 mailto:sage [2006/01/02(月) 23:56:41 ]
あ、上のコード例はC#です。

446 名前:デフォルトの名無しさん mailto:sage [2006/01/03(火) 00:10:51 ]
event がないと AddListner やら RemoveListner を自前で実装せにゃならんのさ

447 名前:デフォルトの名無しさん mailto:sage [2006/01/03(火) 00:38:44 ]
>>444
あー、イベントというものが根本的に分かってないんだろう。
メンバで表現されるものを他の言語と比較すりゃわかると思う。
CLRでのクラスメンバにもてるものはフィールド、メソッド、「プロパティ」、「イベント」なのよ。
後者二つがあることがいわゆるC#が「コンポーネント指向言語」っていわれる理由でも
あり、ただのdelegateフィールドとは「まったく」別のもの。
こうやって特殊化したことによってTypeDescriptorやらで動的にコンポーネント情報を取得できる。

ちなみに 446 も言ってるが、イベントはフィールドとアクセサ(とメタデータ)でなるんだな。

public event EventHandler TextChanged;
と書いたときに生成されるのは
・privateなdelegateフィールド
・publicなadd, removeアクセサメソッド。
・イベントメタデータ
を生成している。

448 名前:440 mailto:sage [2006/01/03(火) 00:42:44 ]
>>446
delegateにも += や -= はあるです。

449 名前:440 mailto:sage [2006/01/03(火) 00:46:05 ]
>>447さんありがとう
即答できないので、調べてみます。

450 名前:デフォルトの名無しさん mailto:sage [2006/01/03(火) 00:57:18 ]
>>448
delegate をそのまま公開しちゃうと呼び出しが外から出来てしまうのが問題なのよ

ここはC++/CLIのスレじゃ?

451 名前:デフォルトの名無しさん [2006/01/03(火) 14:54:46 ]
.NETって使ったことないからよく分からないんだけど、
一度コンパイルしたものを、同じセキュリティーやらなんやらの設定の場合は
キャッシュしておいたコンパイル済みのコードを再利用することって出来ないの?
毎回毎回、プロセス起動のたびにコンパイルしてるのってバカみたいじゃね?

452 名前:デフォルトの名無しさん mailto:sage [2006/01/03(火) 15:02:06 ]
キャッシュされるしngenもあるし

453 名前:デフォルトの名無しさん mailto:sage [2006/01/03(火) 19:56:52 ]
>>451ってバカみたいじゃね?



454 名前:デフォルトの名無しさん mailto:sage [2006/01/04(水) 12:32:46 ]
>>453
何だ、生意気だぞ。 (プンスカプン

455 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 13:19:01 ]
プログラムのあちこちから大量にアクセスする文字列型を、
いちいちUnicode文字の配列からgcnewするのはもったいないと思って
あらかじめ生成しておいたSystem::Stringをグローバルに持つことで解決しようかと思いました。

が、普通にやったらコンパイラに怒られたので試行錯誤の結果以下のようにしてみました。
(StringDataはSystem::Stringを大量に生成して格納するクラス)


StringData^* gpStringData;

int main(array<System::String ^> ^args)
{
 StringData^ stringData = gcnew StringData();
 gpStringData = &stringData;
(以下メイン処理)
}


もうちょっと行儀のよさげな方法ないですかね?

456 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 13:55:09 ]
こう?

value struct StringData {
initonly static String^ A = L"AAA";
initonly static String^ B = L"BBB";
initonly static String^ C = L"CCC";
};

int main()
{
String^ a = StringData::A;
String^ b = StringData::B;
return 0;
}


457 名前:455 mailto:sage [2006/01/07(土) 13:56:25 ]
ごめんこのへん↓参考にして自己解決
ttp://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ImpSingletonInCsharp.asp

458 名前:455 mailto:sage [2006/01/07(土) 14:07:15 ]
>456
今回の場合は、こちらの方法のほうがよさげですね
ありがとうございます

459 名前:デフォルトの名無しさん [2006/01/09(月) 01:03:13 ]
何というか、変態的というか。まぁ、それがC++の良さではあったわけ
だけれど。これではあまりにもコンパイラベンダ泣かせだ…可哀想に。

460 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 07:55:52 ]
C++/CLI をフルに実装できるコンパイラベンダって、
MS以外にあるのかね?

とか思ってたら、 g++ が対応したらかなり驚く。
mcs と合体するとか。

461 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 12:07:26 ]
すいません。質問があります。libpng.libなどを利用した昔のライブラリをC++/CLIで使おうとしたら、
コンパイル時に

libpng.lib(pngerror.obj) : error LNK2019: 未解決の外部シンボル __iob が関数 _png_default_error で参照されました。
libpng.lib(pngrutil.obj) : error LNK2001: 外部シンボル "__iob" は未解決です。

とか言われました。C++/CLIって_iobが使えないんでしょうか?
どなたか解決方法をご存じの方、教えてください。

462 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 14:18:44 ]
Cの標準ライブラリlinkしてる?

463 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 14:32:49 ]
ECMA-372ってISOになるときに内容が変更される可能性とかある?
ECMAは規格書が公開されるからいいけどISOはショボーンだからさ。



464 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 14:57:32 ]
一応、mscoree.lib msvcrt.lib msvcrtd.libはリンクしています。
あと、重複とエラーがでるので、libcmt.libはリンク無視しています。

開発環境はVC++ 2005 Express+PlatFormSDKです。
Win32プロジェクトだとlibpng.libを含んでもコンパイルは通るのに、
CLRプロジェクト(C++/CLI)だとうまく行きません・・・

VC++ 2005のstdio.hに_iobが定義されていないのが問題なのでしょうか?
(関係ないかもしれないけど)

465 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 17:50:19 ]
libpngをソースから作り直したほうが早いよ。
zlibとlibpngのソースをDLしてdswとかslnとかを開いてビルドするだけ。
やったらWindows フォームアプリのプロジェクトに問題なく使えた。
ml.exeがVCExpressにはないので$(MSVS8)\VC\binにコピーしておくこと。

466 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:49:06 ]
ありがとうございます!
試してみます。

467 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 20:48:36 ]
>463
ECMA から ISO に回された仕様書はただで公開しているよ

468 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 21:05:35 ]
>>467
へぇ、ありがとう

469 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 07:08:22 ]
value struct B
{
literal System::String^ var = L"abcd";
literal System::String^ var2 = var+L"1212";
};
var2でエラーが出るんだが...だめなのか。(整数型intとかだと大丈夫だったんだけど...)
リテラル データ メンバの初期化子は定数指揮でなければなりません

470 名前:デフォルトの名無しさん [2006/01/19(木) 07:57:19 ]
literal System::String^ var2 = var + "1212";
は確かにエラーになるね。俺も今確かめてみた。
literal System::String^ var2 = "abcd" + "1212";
これでも同じエラーになる。結局は + 演算子を呼んでるからだろうな。
literal System::String^ var2 = "abcd" "1212";
ならエラーにならなかった。
というわけで、マクロ使え。ってことだと思う。



471 名前:469 mailto:sage [2006/01/19(木) 09:37:44 ]
>>470
literal System::String^ var2 = var;
でもだめみたい。
static ctorでの初期化が許容できるなら
literal -> static initonly に変更するか、マクロにするしかないですね...

msdn2.microsoft.com/en-us/library/5yzft952(en-US,VS.80).aspx


472 名前:デフォルトの名無しさん [2006/01/19(木) 11:48:55 ]
ふむぅ initonly なんてのもあるのか。

ところで、Visual Studio 2005 いじってて思ったんだけど、
C# に比べりゃリファクタリングなんかの点で
C++/CLI は扱いにくいと思うんだよ。
なのでほとんどの部分は C# でかいてるんだけど、
どうしても C++/CLI で書きたい部分もある。
C++/CLI で書いたコードと C# で書いたコードの
相互連携って可能なのかな?

具体的には、技術関連の計算をやるC++の自作ライブラリ、
結構大規模なモノがすでにある。GUI をつけるために
今までは計算結果をバイナリファイルに落として、
それを C# で作った可視化ツールで読み込んでた。
だけどインタラクティブにしたいんで C++/CLI 使えば
いいかなと思ったんだが、今まで C# で作ったGUI部分と
C++で書いた計算部分は C++/CLI で結婚できるのかと。

473 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 12:08:38 ]
C++の計算用DLLをC#から使えばいいだけじゃん



474 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 12:12:25 ]
>>472
今までは C++ -> COM経由 -> C#
これからは C++ -> C++/CLI
.NETでは C++/CLI <=>C#



475 名前:デフォルトの名無しさん [2006/01/19(木) 12:18:13 ]
>>473 C++な計算ライブラリの方は、クラスへの参照を
受け取って処理結果をその中に返すんですが、それでも
可ですか?ソース提供が基本のライブラリだったんで、
DLL化とかはしてなかったんですが、試してみます。


476 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 12:26:53 ]
>>475
refタイプでない普通のクラスはrefクラスでラップする必要がある。ダイレクトには渡せない。

477 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 13:41:47 ]
>クラスへの参照を受け取って処理結果をその中に返す

可能だろ。

478 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:20:10 ]
参照クラスを値クラスに変換する
template等は用意されているのでしょうか?


479 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 10:52:47 ]
キイタ?( ゚д゚)オクサン(゚д゚ )アラヤダワァ

480 名前:デフォルトの名無しさん [2006/01/29(日) 18:09:11 ]
C++/CLI が次の VS まで生き残ってるか、かなり不安。
とはいえ、C++/CLI を結構使ってるけど。

481 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 19:45:25 ]
C#→C++への変換ってできんの?

482 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 19:50:24 ]
そりゃいくら何でも無理だろ。

483 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 20:27:13 ]
>>481
コンパイル→.net reflector



484 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 21:01:45 ]
cli_class<T>::m_member' : 指定されたメンバは初期化できません。
というエラーが出るのですが、m_memberをコピーするにはどうしたらいいのでしょうか?

generic <typename T> ref struct cli_class
{
T m_member;
cli_class(const cli_class% n)
:m_member(n.m_member) //error
{}
};



485 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 23:25:35 ]
generic <typename T> where T : System::ICloneable ref struct cli_class
{
T m_member;
cli_class(const cli_class% n)
//:m_member(n.m_member) //error
{
if ( n.m_member != nullptr )
m_member = safe_cast<T>(n.m_member->Clone());
}
};

こうかな?自信ないけど。

486 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 11:48:01 ]
二項演算子で単項で使われていなかったものオンパレードですね

487 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 13:02:57 ]
cli_class が確定してなくね?
generic <typename T> ref struct cli_class
{
  T m_member;

  cli_class()
  {}
  cli_class(cli_class<T>% n)
    :m_member(n.m_member) //error
  {}
};

const 付けると、型パラメータも影響を受けてキャストできなくなるから
const 外した

488 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 17:35:17 ]
GCC の仲間に C++/CLI コンパイラが仲間入りする日が
いつかやってくると思う人、いる?

489 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 17:51:54 ]
ノシ Java もコンパイルできてるんだから、CLI抜きでやっちゃいそうな気がする

490 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 18:02:27 ]
>>489
おまい、それ普通のgcc。

491 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 18:09:14 ]
mingwで構造化例外って実装されてるの?

492 名前:484 mailto:sage [2006/01/31(火) 18:49:53 ]
>>487
なるほどconstはずしたらできました。
ありがとうございました。


493 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 19:34:10 ]
>490
ああ、実行エンジン無しで作っちゃいそうな気がするってこと



494 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 00:17:29 ]
CLRのこと?

495 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 06:59:47 ]
ランタイムはコンパイラコレクションが
提供しなくてもいいんじゃない?

496 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 08:47:44 ]
GCC で CIL を出力するだけじゃ意味がないから、exe を実行するときバインドするの実行
エンジンはCLR か mono に頼るの?

497 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 09:02:05 ]
>>496 そうなるだろうなぁ。
mono の mcs の方が C++/CLI コンパイルできるように・・・
ならないだろうな。

mono ではすでに ASP.NET はいい感じで動いてるんだったっけ?
Java の牙城をちょっとは切り崩すことが出来る、のかな?
って、Webアプリケーションは PHP でしか書いたこと無いんだけど。

498 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 09:55:46 ]
monoって実行ファイル起動時に外部エンジンにアタッチしてやりとりできるいい仕組みって
ある? Java の JNI で C/C++ から VM 叩くようなヤシ

499 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:32:17 ]
DLL の呼び出しと同じ仕組みが使えた気がする。

以前、コンソールアプリをポータブルに作ろうと思って、
ncurses ライブラリを使って C# コンソールアプリを作った。
ncurses の DLL を C# から呼び出すようにして。
それは Visual Studio .NET 2003 で作成。

で、ncurses の共有ライブラリが入ってる Debian に、
VS でコンパイルした *.exe をそのまま持って行って、
何も考えずに mono で実行したらちゃんと libncurses.so
とかその辺をダイナミックリンクしてくれてあっさり動いた。

500 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:34:03 ]
pc5.2ch.net/test/read.cgi/tech/1020215602/21
の兄弟の片割れが漏れなんだが(もう一人は誰か知らん)
その詳細なリポートを書いた mono の前スレが見れん。

501 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:34:53 ]
それはそうと、JNIって「C/C++ から VM 叩くようなヤシ」か?
漏れ JNI は使ったことないんだけど、逆じゃね?

502 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:38:03 ]
つーわけで、CLI からは DLL と同じように so が呼び出せると思う。
かなりオープンというか、なんというか・・・

503 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:59:04 ]
連投ごめん。リンク間違えた。
pc8.2ch.net/test/read.cgi/tech/1100616350/21 ね。



504 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 13:05:25 ]
>501
JNI は Java からの C 呼び出しと、C/C++ からの JVM 呼び出しの両方を規定してるお

505 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 13:14:26 ]
>>501 お、そうか。スマンコ
ネイティブコードからの呼び出しは正直シランコ

506 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 09:47:25 ]
ええっと、長年Cオンリーでやってきたロートルなんですが、
新しい(?)ポインタの^に関して、詳しく解説した書籍とかありませんでしょうか?

char型の文字列は 文字が1文字ずつ入っていって、最後が\0になっているという、
アセンブラレベルからするととてもわかりやすいものだったのですが、

String^ s = "0123456789" が、メモリ上にどの用に格納されるのか
さらに、この文字列に対して、
char c,*p ;
p=s;
c = *(p+10);
といった、従来のメモリ上のキッタハッタが出来なくなってきているのは、どういう仕組みなのか
を理解したいのですが。


507 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 10:18:32 ]
managedなだけよ

508 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 10:43:00 ]
>>506
JavaやLispやCLIの実行環境がどうなっているか調べろ。


509 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 12:53:41 ]
>>508
それを詳しく解説した書籍とかを訊いてんだよ、ボケが。

510 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 13:02:48 ]
そんな怒らないでよ(w
これ読みなよ、日本語はいいのがないから。

Shared Source Cli Essentials
www.amazon.co.jp/exec/obidos/ASIN/059600351X/

511 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 15:55:01 ]
>>506
C++のclassは理解してますか?
class objectを指すポインタと思えばよいかと。

512 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 19:54:02 ]
template引数を使おうとしたらエラーが出るのですが、何がいけないのでしょうか?

ref struct F{//FNの引数にしようかなと
int operator()(int a){return a;}
};

generic <typename FN> ref struct Fn{
void test(){
FN fn;
fn.operator ()(100);// : error C2039: '()' : 'System::Object' のメンバではありません。
}
};

513 名前:512 mailto:sage [2006/02/03(金) 20:13:31 ]
generic -> template
にしたら通りました。
generic の typename は Object前提になるのかな




514 名前:512 mailto:sage [2006/02/03(金) 20:24:11 ]
Reflectorでみてみたら
generic で宣言した方はパラーメータが残ってた、 class_name<T>
TはObjectを想定してるので、パラメータが残せてるんかな...
templateの方はパラメータが固定されてた -> class_name<int>


515 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 23:42:54 ]
単に、マネージドとネイティブの混合型になるから駄目なだけ






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

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

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