- 1 名前:./1256645713/662 mailto:sage [2010/03/15(月) 09:41:19 ]
- おそらく、.NET開発でデファクトスタンダードに最も近いであろう
C++/CLIについて語ろうぜ! このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。 .NETのクラスライブラリの使い方といった質問は Visual Studioスレにお願いします。 前スレッドはこちら くだすれC++/CLI(初心者用) pc8.2ch.net/test/read.cgi/tech/1142144110/l1 dat落ち姉妹スレ C++/CLI part3 pc12.2ch.net/test/read.cgi/tech/1206447234/l1 pc11.2ch.net/test/read.cgi/tech/1142147319/l1 pc8.2ch.net/test/read.cgi/tech/1126450441/l1 managed C++ やろうぜ!! 002 pc8.2ch.net/test/read.cgi/tech/1139043535/l1
- 4 名前:デフォルトの名無しさん [2010/03/17(水) 21:02:17 ]
- 開発でつかわれてるのかな?
C++/CLIって。
- 5 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 21:41:39 ]
- 必要なら使われるだろ。
だからなんなんだ?
- 6 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:37:29 ]
- >>3
LINKにある。 /KEYCONTAINER /KEYFILE
- 7 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:45:13 ]
- というか必要な時だけ最小限使うもの
基本的に使わないほうがいい
- 8 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 00:33:17 ]
- 最近妙にお気に入り
- 9 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 09:03:31 ]
- Managed C++でさえ一部で使われていた。
- 10 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:23:41 ]
- フォームの中にあるテキストボックスの内容をmainとか関数とかから書き換えたいんだけど
どんな方法があるでしょうか? 今までは強引にチェックボックスにチェックが入ると void test(System::Windows::Forms::TextBox^ tb_log_view); こんな感じの関数呼び出してTextBoxを強引にわたして指定の処理して テキストボックスにメッセージ表示させてたんだけど 何せ使い勝手が悪いので・・・
- 11 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:29:18 ]
- String^使えばいいんちゃう?
- 12 名前:デフォルトの名無しさん [2010/03/25(木) 18:00:01 ]
- 今、「Cで書かれたライブラリをC++/CLIでラッピング(DLL化)し、
C#で使おう」という目的に向けて、Cのライブラリをラッピング中ですなのですが、構造体で悩んでます。 C++/CLI側でC#側に「構造体の配列」を返す関数が見せてるのですが、実行すると思ったように動きません。 C++/CLI側 [宣言] public ref struct SampleStruct { static CHAR cUpdate; }; static array<SampleStruct^>^ pstSample = gcnew array<SampleStruct^>(10); 関数 array<SampleStruct^>^ hogehoge(){ if(pstSample[0] == nullptr ){ for(int i=0; i<10; i++ ){ pstSample[i] = gcnew (SampleStruct); } } pstSample[2]->cUpdate = 2; return pstSample; } C#側 SampleStruct[] stTest = new SampleStruct[10]; stTest = LIBSAMPLE.hogehoge(); ここで、stTest[0].cUpdateからstTest[9].cUpdateまでを見ると 全部2が入っております。(本当は[2].cUpdateだけ2が入っていて欲しい) どこが原因か分かりますでしょうか? OS:XP 環境:VS2008 ExpressのC++版とC#版を使ってます。
- 13 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:34:20 ]
- > static CHAR cUpdate;
Cさえ理解していないのがよくわかる。
- 14 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:45:45 ]
- うわ・・・・・
泣ける・・・・orz 回答有難うです
- 15 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:53:51 ]
- 突っ込みどころや怪しい箇所が多すぎて、どうしたいかが見えてこない(笑
配列はC++/CLIでアロケーションしていいのかとか。 C#でいう構造体はvalue class (or struct)であって、ref structはクラスだけどどっちにしたいのとか。
- 16 名前:12,14 mailto:sage [2010/03/25(木) 19:13:48 ]
- 目的は、「Cで書かれたライブラリをC#で使う」事なのですが、
現状は、Cの方には手を加えないように、やる方法として、C++/CLIで ラッピングするという手段があるという事なので、作業している次第。 そこで、構造体のポインタを戻り値としている関数はどう扱えば?と 思ってましたら、 ap.atmarkit.co.jp/bbs/core/fdotnet/17380 このような話をみつけたので、まずはref structでやってるという状況です。
- 17 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:50:34 ]
- CのライブラリだったらC++/CLIなんか使わずにC#でDllImportすればいいような
- 18 名前:12,14 mailto:sage [2010/03/26(金) 09:55:14 ]
- >>17
説明不足でした。 (当然の疑問ですよね) そのCのライブラリというのが、元がスタティックしか考慮されておらず、 DLL用にはなってなく(__declspec(dllexport)のような記載は一切なし)、 選択肢として 1 Cのソースをdll対応に修正(__declspecを全関数に追加) 2 元のCには手を加えず、新しくラッパーを作る があり、今後もCの方は勝手にバージョンが上がっていくので、 それなら、元のソースに手を加えない方向でやろうとなった次第です。
- 19 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:26:08 ]
- だからってそのラッパーをC++/CLIで書く必要はないだろ
Cで薄ーいラッパー書いて普通のネイティブDLLとしてコンパイルすればおk C++のライブラリとなると面倒だけどそうでないならC++/CLIはできるだけ避けたほうが賢明
- 20 名前:12,14 mailto:sage [2010/03/26(金) 12:05:28 ]
- >>19
その手がありましたか! C#でDllImportして、 DLL関数に渡す構造体、DLL関数から受け取る構造体は [StructLayout(LayoutKind.Sequential)]を用いてC#側に定義して やりとりするという事ですね。 試してみます
- 21 名前:デフォルトの名無しさん [2010/04/25(日) 20:06:11 ]
- 【初心者歓迎】C/C++室 から誘導されてきました。
Form1とForm2があり、Form1からForm2を呼び出すようにしています。 また、Form2に配置したボタンを押すと関数が呼び出されて、所望の処理をするようにしています。 以下の2点について教えてください。 1.関数内の処理の進捗をForm2内のLabelやProgressBarに表示したいです。 2.Form2からForm1を操作したい(Form2のボタンを押すとForm1/Form2ともに終了するようにしたい)です。 両方ともポインタを使えば出来そうな気がするのですが、例えば2.の方ではForm2を指すポインタの宣言の仕方が わからないです。 よろしくお願いします。
- 22 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:24:49 ]
- >>21
ポインタじゃなくて参照になる。 Form2^ form2;
- 23 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:26:28 ]
- >>21
動くかどうかは試してない。 【Form1.h】 ref class Form1 { public: System::Void Form1Func() {〜} private: System::Void Form2Func(); private: System::Void Form1_KeyDown(〜) {Form2Func();} } 【Form1.cpp】 #include "Form1.h" #include "Form2.h" System::Void Form1::Form2Func(){ Form2^ form2 = safe_cast<Form2^>(Application::OpenForms["Form2"]); form2->Form2Func(); } 【Form2.h】 ref class Form2 { public: System::Void Form2Func() {〜} private: System::Void Form1Func(); private: System::Void Form2_KeyDown(〜) {Form1Func();} } 【Form2.cpp】 #include "Form1.h" #include "Form2.h" System::Void Form2::Form1Func() { Form1^ form1 = safe_cast<Form1^>(Application::OpenForms["Form1"]); form1->Form1Func(); }
- 24 名前:21 [2010/04/25(日) 23:09:54 ]
- >>22>>23
ありがとうございます。 残念ながらうまくいかないです。 環境はVS2005 C++ WinXP SP3 Form1(親フォーム)からはForm2.hをインクルードして Form2^ frm = gcnew Form2(); frm->ShowDialog(); とできるのですが、Form.hではForm1.hをインクルードすると循環参照になってしまうようでエラーになります。 また、Form2.h内で関数宣言だけしてForm2.cpp内でForm1.hをインクルードして実行部分を書こうとしましたが Form2.h内の関数宣言(>>23のprivate: System::Void Form1Func();にあたる部分)がコンパイルエラーになってしまいます。
- 25 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:31:54 ]
- なんでこういう意味での初心者がC++/CLIなんてマニアックな言語触ってるんだろう……?
> Form2に配置したボタンを押すと関数が呼び出されて > 1.関数内の処理の進捗をForm2内のLabelやProgressBarに表示したいです。 Form1関係ないよね? Form2が勝手にやってろって話 > 2.Form2からForm1を操作したい(Form2のボタンを押すとForm1/Form2ともに終了するようにしたい)です。 Form1がForm2を作ったとき、Form2のFormClosedイベントに引っかけるとかすればいいんじゃね? // Form1内のForm2を表示させる処理 Form2^ form = gcnew Form2(); form->FormClosed += gcnew FormClosedEventHandler(this, &Form1::OnForm2Closed); form->Show(); // Form1内で定義 private: void OnForm2Closed(Object^ sender, FormClosedEventArgs^ e) { this->Close(); } ×アイコンで閉じたときはForm1は閉じない、ボタン押したときだけとかなら Form2にCloseWithParentみたいなプロパティ用意して 表示させるときのForm2^はメンバ変数に保持しておいて OnForm2Closedで確認
- 26 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 09:58:49 ]
- C++/CLIだと、Cのランタイム例外のハンドリングが出来ない臭いんだけど、どうすれば良いんだろう…
ハンドラ設定してるのに動いてくれない 例えば_tcsftime(..., L"%h", ...);みたいなやつ ※普通の例外じゃないんで、マネージand/orネイティブでもtry catch出来ない
- 27 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:43:17 ]
- そもそもCRTが例外なんて投げないはずだが
> 727 :デフォルトの名無しさん[sage]:2008/07/03(木) 13:51:22 > なんで、VC++2008の、strftime _tcsftimeは、 > 書式に無い文字を渡すと例外終了するのかなあ。 > 単に無視してくれりゃいいのに。 > 自前でパースしてから、渡してやるしか無いのかな。 > 729 :デフォルトの名無しさん[sage]:2008/07/03(木) 14:11:02 > ちょっと見てみたけど > _ASSERTE( ( "Invalid format directive" , 0 ) ); > だからデバッグ時だけの話じゃん。
- 28 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:35:20 ]
- >>27
つ msdn.microsoft.com/ja-jp/library/ksazx244(v=VS.80).aspx 試してみると早いかも… int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); tm tmNow; __time64_t tNow; TCHAR sz[20]; try { _time64(&tNow); _localtime64_s(&tmNow, &tNow); _tcsftime(sz, 20, L"%h", &tmNow); } catch (...) { Console::WriteLine("error!"); } Console::ReadLine(); return 0; }
- 29 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:07:44 ]
- ハンドラ設定ってなんだ普通に_set_invalid_parameter_handlerで呼んでくれたが
- 30 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 22:16:23 ]
- SerialPortクラスを使ってデータを受信する際、
・SerialPort::Data_Receivedイベントで受信 ・受信データはQueueクラス経由でメインスレッドから受信 ・メインスレッドでは、あるバイト数を数秒以内に受信できない場合タイムアウト を、実装したいのですが、タイムアウト処理はどのように記述したら良いのでしょうか? // Data_Receivedイベント private: System::Void serialPort_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e) { int length = serialPort->BytesToRead; array<unsigned char>^ buffer = gcnew array<unsigned char>(length); serialPort->Read(buffer, 0, length); Queue^ sync_queue = Queue::Synchronized(m_queue); for (int i = 0; i < length; i++) { sync_queue->Enqueue(buffer[i]); } }
- 31 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 12:09:02 ]
- マネージクラスのインスタンスをグローバルスコープっぽく参照する方法ないの?
全コンストラクタでやりとりするようなマンドクセ方法がいやだ
- 32 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 15:55:49 ]
- クラスの静的メンバに入れとけばいいだけ
- 33 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:28:42 ]
- あと public static ね
- 34 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:46:40 ]
- C++/CLIに書き換えてる奇特なものです
char www[100]; char* ptr; ptr = www + i; array<char>^ www = gcnew array<char>(100); array<char>^ ptr; ptr = www + i; ← ? ?の部分をご教授くださいm(_ _)m
- 35 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 00:53:22 ]
- CLI配列はポインタじゃないから無理
- 36 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:21:40 ]
- pin_ptr してもいいけどさ、www[i] で駄目な理由は何なの?
- 37 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 08:14:59 ]
- C++の感覚なら毎回[i+a]としないで最初からオフセット付けときたいのは当然だろ
無理なので常にwwwとiをセットにして持ちまわるのが普通 メソッドの引数にもオフセットを指定できるようにする
- 38 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 22:43:16 ]
- perlのように return a, b できるようにしてくんないかな
- 39 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 12:07:55 ]
- .NET4ではTuple型自体は導入されたのでC#やVBでは将来的に
言語レベルでサポートされる可能性はある。 C++/CLIはほぼ見捨てられてるので期待するだけ無駄。
- 40 名前:デフォルトの名無しさん mailto:sage [2010/08/17(火) 21:49:08 ]
- >>34
array<char>^ www = gcnew array<char>(100); interior_ptr<char> ptr; ptr = &www[0] + i;
- 41 名前:デフォルトの名無しさん [2010/08/21(土) 06:53:22 ]
- VC2010 EEを使用しています。
RS-232Cで通信を行い、プログラムを終了させようとして this->Close(); を行うと、エラーメッセージも出ないままプログラムが固まってしまいます。 ポートを閉じてないことが原因かと思い、 serialPort1->Close(); を実行してみたところ、今度はここで同じように固まってしまいました。 vsug.jp/tabid/63/forumid/46/postid/9991/scope/posts/Default.aspx を、参考に、BeginInvokeを使用していますが、ダメでした。 この場合、どこを見れば良いのでしょうか? よろしくお願いします。
- 42 名前:デフォルトの名無しさん mailto:sage [2010/09/18(土) 16:16:15 ]
- 画像処理を行いたいのですが、
Bitmap、Image、Graphic・・・どのコンポーネントを使うのがお得なのでしょうか
- 43 名前:デフォルトの名無しさん mailto:sage [2010/09/18(土) 16:36:42 ]
- >>42
どんな画像処理をするかが分からないと、 えらべないと思われます
- 44 名前:42 mailto:sage [2010/09/18(土) 16:48:33 ]
- カラー画像をモノクロにしたり、コントラストかけたり、拡大縮小したりの初歩的なことがしたいです。
あと、今のところはCUIで行いたいです。
- 45 名前:デフォルトの名無しさん mailto:sage [2010/09/18(土) 18:01:22 ]
- >>44
俺はあまり詳しくないが、 ぐぐると ttp://msdn.microsoft.com/ja-jp/academic/cc998604.aspx ここで Bitmap クラスを利用することにより、画像に対してピクセル単位で様々な処理を行うことができます と書いてある .netのクラスを使うなら、おそらくやりたいことはこういうことだろう
- 46 名前:デフォルトの名無しさん mailto:sage [2010/09/18(土) 23:40:29 ]
- Bitmap使ってみたけれど、画像の保存の仕方がわからない・・・
WriteBitmap("C:\\・・・",data)とかdata.Save(・・・)ってな感じでできないのかな
- 47 名前:デフォルトの名無しさん mailto:sage [2010/09/18(土) 23:43:33 ]
- 普通にSaveメソッドあるだろ
- 48 名前:デフォルトの名無しさん mailto:sage [2010/09/19(日) 05:14:50 ]
- ホントだ。ごめん、見逃してたわ。
- 49 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 03:53:30 ]
- なぜ下記のようなプログラムでエラーが発生するのかわかりますか??
--- プログラム --- #include "stdafx.h" using namespace System; using namespace System::Drawing; int main(array<System::String ^> ^args){ Bitmap^ image = gcnew Bitmap("test.jpeg"); image->SetPixel(0,0,Color::Black); ←ここでなぜかエラー起きます image->Save("test2.bmp"); return 0; } --- エラー内容 --- ハンドルされていない例外: System.ArgumentException: 使用されたパラメータが有効ではありません。 場所 System.Drawing.Bitmap..ctor(String filename) 場所 main(String[] args) 場所 c:\documents and settings\***\デスクトップ\test\test.cpp:行 10 場所 mainCRTStartupStrArray(String[] arguments) 場所 f:\dd\vctools\crt_bld\self_x86\crt\src\mcrtexe.cpp:行 309
- 50 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 07:25:44 ]
- >>49
test.jpegはちゃんとプロジェクトファイルと同じ階層にある? 余計なお世話かも知れないが、.netでやるなら C#で作ったほうが楽なんじゃないだろうか・・・ わざわざマイナーな環境で挑戦するよりもいいと思うんだが
- 51 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 08:08:59 ]
- >>49
落ちてる場所は、その上の行だぞ。
- 52 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 11:32:08 ]
- これだけ利用者に嫌われてる言語も珍しいな
初心者が質問するたびに使うなと勧められる
- 53 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 13:44:55 ]
- >>50-51
ありがとう。jpegじゃなくてjpgだったという凡ミスしていたことに気づけたわ ・・・一度C#に浮気してみる
- 54 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 13:53:46 ]
- >>52
嫌われているというか、言語自体が初心者お断りだからな 初心者が無謀なことしようとしていたら、そりゃ止めるだろう
- 55 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 14:01:21 ]
- C++も.NETも使いこなせる人が、止むを得ず使うための物。
使わなくていいなら使いたくない。
- 56 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 15:01:38 ]
- 始めようにも資料が無さ過ぎる
MDI作るときどうするかとか ちょっとしたことの逆引きがネット上で全く出てこない ようやくOpenGL表示できるようになって C++の頃の遺産をつかえると思ったのに
- 57 名前:デフォルトの名無しさん mailto:sage [2010/09/20(月) 16:33:26 ]
- C#でできるから、それを参照にすればいい
なにもかもC++/CLIで済ませようとしないことをお勧めする
- 58 名前:デフォルトの名無しさん mailto:sage [2010/09/21(火) 02:27:48 ]
- 嫌ってはいないんだ
ただ何故かこの言語とのファーストコンタクトというか接し方が 一言入れておかないと不幸にしかならなそうな人が多いのよね
- 59 名前:デフォルトの名無しさん mailto:sage [2010/09/21(火) 09:55:56 ]
- WinFormsデザイナとかC++/CLIにそもそも要らないんだよな
こういうのがあるから「Visual C++ 2008 で簡単GUIプログラミング」みたいな勘違い本やサイトが出て初心者が道を間違える
- 60 名前:デフォルトの名無しさん mailto:sage [2010/09/21(火) 23:18:00 ]
- 56ですが自分
C++の文法がある程度使えて フォームデザインが総合開発環境上で扱えて 至れり尽くせりじゃん、と思ってとっかかりました 現実は情報が全く無く よくわからないクラスとかいっぱいあって 解説も無くて どうしようと途方にくれていましたが、QTとかよりは 導入コストも再勉強のコストも無いだろうと信じて使ってます。 だって、CやC++だとGUI作るの辛いんだもん っていう理由だとダメですか
- 61 名前:デフォルトの名無しさん mailto:sage [2010/09/21(火) 23:32:23 ]
- まあ正直C++の名前が付いてるだけで
マネージ部分はC++とは直接関係なくて学び直し必要だし それなら素直にC# C#2.0の範囲までなら多分C++/CLIより簡単だし サンプルも多いし将来WPF/Silverlightとかにも応用できるし C#やっとけば逆にC++/CLIを橋渡し用ぐらいなら書けるようになるし
- 62 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 13:44:31 ]
- けっきょくC++風に文法を汚したC#と普通のC++を無理矢理くっつけただけの代物だからな
- 63 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 14:03:20 ]
- >>62
それを一応形にできたところは評価できる。
- 64 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 19:28:25 ]
- #define健在なり
- 65 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 19:37:10 ]
- #define private public
- 66 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 02:31:06 ]
- LPVOIDからarray<String^>^に変換したいのですが、アドバイスください。
//////////Form1_Load////////// HANDLE hMap; LPVOID lpBuf; hMap=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,L"View"); if(hMap==NULL){Form::Close();} lpBuf=MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS,0,0,0); if(lpBuf==NULL){Form::Close();} if(GetLastError()==ERROR_ALREADY_EXISTS){//すでに同じ名前のオブジェクトが存在する lpBuf=Environment::GetCommandLineArgs();//コマンドラインから取得//ここでエラー ///////////ここまで///////////// つまり二重起動時に共有メモリを使いたいのですが、どうしてもできません。 先人方どんなことでもいいので教えてくだせえ。
- 67 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 02:40:23 ]
- marshal_asとかじゃねえの
- 68 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 02:51:50 ]
- > LPVOIDからarray<String^>^に変換したい
> lpBuf=Environment::GetCommandLineArgs();//コマンドラインから取得//ここでエラー コードの方はarray<String^>^からLPVOIDに変換したいように見える
- 69 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 03:19:27 ]
- >>67
2008 Express Editionを使っていまして・・・ヘッダーがないらしいです。 www.codeguru.com/forum/showthread.php?t=468408 >>68 コマンドライン引数を得た後、array<String^>^に変換しようと思ったのです。 宣言時からarray<String^>^だとMapViewOfFileでつまずいちゃうので・・・。 どちらにせよ、コマンドライン引数を得た後、 共有メモリarray<String^>^として反映できればいいのですが。
- 70 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 03:50:07 ]
- 全体にコードが滅茶苦茶に見えるし
そもそもLoadイベントなんかでやる処理には見えないけど(mainでやることだろ) 共有メモリにString^を書き込みたいのなら > ttp://www.codeguru.com/forum/showthread.php?t=468408 のリンク先にString^をポインタに変換する方法が載ってるからmemcpyなりなんなりすればいい 複数の文字列を書き込む必要があるなら\0なりなんなりで区切る
- 71 名前:デフォルトの名無しさん mailto:sage [2010/09/29(水) 06:10:09 ]
- 共有メモリをやめてSendMessageに妥協しました
とにかく二重起動時にコマンドライン引数を渡すことができました! 皆様、貴重なアドバイスをありがとねん
- 72 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 12:39:42 ]
- C++/CLIにおけるsafe_cast,static_cast,dynamic_castの違いについて教えてくださいよ
safe_cast :型が合わないと例外が発生、実行コスト中 dynamic_cast:型が合わないとNULLを返す、実行コスト大 static_cast :型が合わなくても何もしない、実行コスト小 この認識であってますか?
- 73 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 16:11:05 ]
- safe_castとdynamic_castのコストはほぼ同じ。
static_castが速くなるのはダウンキャストの場合だけ。静的に解決できる場合はsafe_castと同じ。
- 74 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 20:39:28 ]
- >>66
いまさらだけど、.NET Framework 4以降ならMemoryMappedFileクラスを使えばいいと思うよ。
- 75 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 20:52:42 ]
- .NETのハンドルのダウンキャストにstatic_cast使うのは激しく疑問
公式の説明でもパフォーマンスをえらく強調してるが、 そのためにわざわざ検証不能コードにしてまでやるほどのものなのかと
- 76 名前:デフォルトの名無しさん mailto:sage [2010/10/08(金) 20:22:23 ]
- www.infoq.com/jp/news/2010/10/Co-Evolution-Doubts
>どうやらそれらは、レガシC++アプリケーションをWindows Phoneに移植したいと考えている多くの開発者にとって、C++/CLIは、ベストなルートに見えるのであろう。 地獄への道は善意で舗装されている
- 77 名前:デフォルトの名無しさん mailto:sage [2010/10/08(金) 20:28:08 ]
- 筆者自身は否定的に見えるけど、まだそんなこと考えてる人もいるんだねぇ
- 78 名前:デフォルトの名無しさん mailto:sage [2010/10/08(金) 20:52:06 ]
- 筆者ほんとにC++/CLI触ったことあるのかな
Silverlightで使える範囲のC++/CLIはC++とは全く互換性なくてただの汚いC#なんだけど
- 79 名前:デフォルトの名無しさん mailto:sage [2010/10/08(金) 21:47:31 ]
- 絶対的処理性能が必要な場合か、過去資産使う時以外はメリットよな?
- 80 名前:デフォルトの名無しさん mailto:sage [2010/10/08(金) 22:05:21 ]
- 検証可能なコードしか使えない場合は処理性能同じだし過去資産も使えないよ
- 81 名前:デフォルトの名無しさん mailto:sage [2010/10/09(土) 21:36:15 ]
- 音の再生ってC++/CLIでできるの?
画像の場合ピクチャボックスみたいな感じに楽に音楽再生させたいのだけど
- 82 名前:デフォルトの名無しさん mailto:sage [2010/10/10(日) 23:03:16 ]
- ネイティブのC++でできるなら同じ方法でできる
.NET使ってもできる どちらにしてもC++/CLIとは直接関係ない話
- 83 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 00:46:33 ]
- サンクス
これ絶対初心者向けじゃない気がする
- 84 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 00:49:57 ]
- 「気がする」ではない。
絶対初心者向けではない、その通りだ。
- 85 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 06:02:46 ]
- ですよね
俺みたいな勘違い君が集まるから スレタイ変えると平和になる気がする
- 86 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 11:40:19 ]
- 「C#でアプリを作っているが、C++のライブラリで音を鳴らしたい」もしくは
「C++(非CLI)でアプリを作っているが、.NETのライブラリを使って音を鳴らしたい」 →そこだけC++/CLIを部分的に使おう という風に特別な意図を持って言語であって、 >>81のような質問が出てくる時点でC++/CLIを使うのは間違っている
- 87 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 12:08:45 ]
- 前者はCLIでなくていいだろ
- 88 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 13:10:09 ]
- そんなに大きなライブラリでなければ>>19方式がベターだな
- 89 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 15:50:17 ]
- 初心者用のC++/CLIじゃなくて
C++/CLIの初心者向けのスレなんだよなw
- 90 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 16:27:40 ]
- C++/CLI初心者にクラスチェンジできる条件が、
1) C++習得レベル一定以上 2) .NET習得レベル一定以上 だからな
- 91 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 02:47:19 ]
- C++とC#があった上で補助的に使うもんだからねぇ
みんな言うように初心者が使う物じゃないね。
- 92 名前:デフォルトの名無しさん [2010/10/12(火) 15:18:47 ]
- こんなのに熟練したくないわ
どうしても必要なときにちょっと調べてその場が凌げれば充分
- 93 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 18:55:47 ]
- C++にGCを導入した言語。そう考えれば実用性は高いはず。
- 94 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 19:17:34 ]
- C++と、GCをサポートした別の言語を混ぜた言語。
アンマネージとマネージの境界は常に意識する必要がある。
- 95 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 20:52:46 ]
- 仕事では使いたくないが、趣味でいじるのなら楽しい。
Express Editionだと実行中のプロセスにアタッチできるのが C++しかないってのも使ってる理由のひとつ。
- 96 名前:デフォルトの名無しさん mailto:sage [2010/10/27(水) 21:11:21 ]
- 日経のムックでC++/CLIが宣伝されてるな。
簡単GUIプログラミング!みたいな見事な勘違い記事だった。騙されて道を誤る初心者が不憫でならない。
- 97 名前:デフォルトの名無しさん mailto:sage [2010/10/30(土) 18:38:53 ]
- 道を踏み外しそうになり、C++Builderにシフトできました
- 98 名前:デフォルトの名無しさん mailto:sage [2010/10/31(日) 02:19:24 ]
- 初心者はC#いじっとけ
- 99 名前:デフォルトの名無しさん mailto:sage [2010/11/02(火) 23:54:01 ]
- 増えた言語仕様って、ref, ^, gcnew だけでしょ?
- 100 名前:デフォルトの名無しさん mailto:sage [2010/11/02(火) 23:59:30 ]
- ジェネリック,トラッキング参照,ファイナライザ,プロパティ,イベント,デリゲート, etc
CLI拡張の部分だけでも言語仕様書の量がC#並み
- 101 名前:デフォルトの名無しさん mailto:sage [2010/11/03(水) 00:03:31 ]
- 2種類の言語が同居してる構造だな。
- 102 名前:デフォルトの名無しさん mailto:sage [2010/11/03(水) 04:25:15 ]
- D言語よりマシ。
- 103 名前:デフォルトの名無しさん mailto:sage [2010/11/03(水) 16:45:49 ]
- Z言語になるころには
なんとなくこんな感じ、って思い描いたものが 1行で組みあがるくらいに なるわけねぇ
- 104 名前:デフォルトの名無しさん mailto:sage [2010/11/03(水) 17:28:32 ]
- ref classのメンバーに構造体がある場合、その構造体のポインターはどうやって取得すればいいの?
pin_ptr<SCRIPT_STRING_ANALYSIS*> pssa = &(this->構造体型の変数); こういう風にしてもうまくいかないんだが
|

|