おそらく、.NET開発でデファクトスタンダードに最も近いであろう
C++/CLIについて語ろうぜ!
このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。
.NETのクラスライブラリの使い方といった質問は Visual Studioスレにお願いします。
前スレッドはこちら
くだすれC++/CLI(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1142144110/l1
dat落ち姉妹スレ
C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/l1
http://pc11.2ch.net/test/read.cgi/tech/1142147319/l1
http://pc8.2ch.net/test/read.cgi/tech/1126450441/l1
managed C++ やろうぜ!! 002
http://pc8.2ch.net/test/read.cgi/tech/1139043535/l1
探検
くだすれC++/CLI(初心者用)part2
■ このスレッドは過去ログ倉庫に格納されています
2010/03/15(月) 09:41:19
379デフォルトの名無しさん
2011/09/19(月) 15:35:43.23380デフォルトの名無しさん
2011/09/19(月) 20:45:06.45 別にソース読まなくても、CWinFormsControl じゃ駄目なの?
381デフォルトの名無しさん
2011/09/20(火) 22:52:53.28382デフォルトの名無しさん
2011/09/26(月) 15:27:11.67383デフォルトの名無しさん
2011/10/12(水) 15:19:32.05 もともと持ってないものは捨てられないわな
384デフォルトの名無しさん
2011/10/16(日) 23:44:09.15 WebBrowserコントロールにNewWindow2イベントを実装する
http://main.tinyjoker.net/Tech/CSharp/WebBrowser%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%CBNewWindow2%A5%A4%A5%D9%A5%F3%A5%C8%A4%F2%BC%C2%C1%F5%A4%B9%A4%EB.html
これをVC2008でやりたいんですけどどう書けばいいか分かる人いますか・・・
http://main.tinyjoker.net/Tech/CSharp/WebBrowser%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%CBNewWindow2%A5%A4%A5%D9%A5%F3%A5%C8%A4%F2%BC%C2%C1%F5%A4%B9%A4%EB.html
これをVC2008でやりたいんですけどどう書けばいいか分かる人いますか・・・
385デフォルトの名無しさん
2011/10/16(日) 23:51:00.77 C++/CLIならほとんど何も違わないが
C++/CLIはC++じゃないけどそれはわかってる?
そんな質問するような人がなんでC++/CLIなんか使うのか正直意味がわからない
素直にC#使うか、C++やりたいんだったらネイティブでATLやMFC使ったほうが
C++/CLIはC++じゃないけどそれはわかってる?
そんな質問するような人がなんでC++/CLIなんか使うのか正直意味がわからない
素直にC#使うか、C++やりたいんだったらネイティブでATLやMFC使ったほうが
386デフォルトの名無しさん
2011/10/17(月) 13:53:12.58 初心者用といっても、.NETとC++はマスターしてないと。
387デフォルトの名無しさん
2011/10/17(月) 14:51:10.32388デフォルトの名無しさん
2011/10/17(月) 15:51:31.18 むしろ初心者はC++/CLI使うな
389デフォルトの名無しさん
2011/10/29(土) 09:05:13.17 今までFormで自動で作る機能でストリップメニューを作ってたのですがそうすると一個づつthis->A = gcnew... this->B = gcnew...
みたいな感じで作られてしまって、ABCのときもあればABCDEの時もあるようにしたいので
ループみたいな感じでまとめたいのですが
array<System::Windows::Forms::ToolStripMenuItem>^ strips = gcnew array<System::Windows::Forms::ToolStripMenuItem>(5); というやり方だとは教わったのですがこれをメニューアイテムに登録するときに
this->StripMenuItem1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) {this->AToolStripMenuItem,this->BToolStripMenuItem,this->CToolStripMenuItem・・・}
と書いてたのですがここはどうすれば良いでしょうか?
みたいな感じで作られてしまって、ABCのときもあればABCDEの時もあるようにしたいので
ループみたいな感じでまとめたいのですが
array<System::Windows::Forms::ToolStripMenuItem>^ strips = gcnew array<System::Windows::Forms::ToolStripMenuItem>(5); というやり方だとは教わったのですがこれをメニューアイテムに登録するときに
this->StripMenuItem1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) {this->AToolStripMenuItem,this->BToolStripMenuItem,this->CToolStripMenuItem・・・}
と書いてたのですがここはどうすれば良いでしょうか?
390デフォルトの名無しさん
2011/10/29(土) 09:24:47.38 その前にusing namespace System::Windows::Forms;を入れることを激しくおすすめするw
391デフォルトの名無しさん
2011/10/29(土) 09:30:46.12 どういうことですか?わかりやすく説明してください
392デフォルトの名無しさん
2011/10/29(土) 09:50:02.99 array<System::Windows::Forms::ToolStripMenuItem^>^ じゃないの
っていうかC++/CLIなんかやめてC#やれ
っていうかC++/CLIなんかやめてC#やれ
393デフォルトの名無しさん
2011/10/29(土) 09:53:37.07 >>392
ありがとうございます
そこは直しました
this->StripMenuItem1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) {this->AToolStripMenuItem,this->BToolStripMenuItem,this->CToolStripMenuItem・・・}
ここに何を入れていいのかわかりません
C#もやってますがどちらにしろ初心者でわかりませんし・・・
ありがとうございます
そこは直しました
this->StripMenuItem1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) {this->AToolStripMenuItem,this->BToolStripMenuItem,this->CToolStripMenuItem・・・}
ここに何を入れていいのかわかりません
C#もやってますがどちらにしろ初心者でわかりませんし・・・
394デフォルトの名無しさん
2011/10/29(土) 10:15:21.39 配列を作ったら次は各要素にToolStripItemのインスタンスを代入する
C#の入門書買って出直してきたら
C#の入門書買って出直してきたら
395デフォルトの名無しさん
2011/10/29(土) 16:39:02.97 for i=0 < .. <i++
IntPtr ptr(hoge[i]);
strips[i] = (gcnew System::Windows::Forms::ToolStripMenuItem());
strips[i]->Text = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(ptr);}
hoge[i]はhoge[5][20]のWCHARです
先頭の一文字しかTextに入っていません。どうすれば良いでしょうか?
IntPtr ptr(hoge[i]);
strips[i] = (gcnew System::Windows::Forms::ToolStripMenuItem());
strips[i]->Text = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(ptr);}
hoge[i]はhoge[5][20]のWCHARです
先頭の一文字しかTextに入っていません。どうすれば良いでしょうか?
396デフォルトの名無しさん
2011/10/29(土) 16:58:16.15 > Marshal.PtrToStringAnsi メソッド
> アンマネージ ANSI 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージ String にコピーし、
> 各 ANSI 文字を Unicode に拡張します。
何故、WCHAR*を入れられると思ったのだろうか
http://msdn.microsoft.com/ja-jp/library/bb384865.aspx
> アンマネージ ANSI 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージ String にコピーし、
> 各 ANSI 文字を Unicode に拡張します。
何故、WCHAR*を入れられると思ったのだろうか
http://msdn.microsoft.com/ja-jp/library/bb384865.aspx
397デフォルトの名無しさん
2011/10/29(土) 17:13:28.22 >>396
>アンマネージ ANSI 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージ String にコピーし、
> 各 ANSI 文字を Unicode に拡張します。
どの部分がcharって意味なんですか?
ちなみにsize_t wLen = 0;errno_t err = 0;/*ロケール指定*/setlocale(LC_ALL,"japanese");/*変換*/err = wcstombs_s(&wLen, wStrC, 20, charmoji, _TRUNCATE);で直したらできました
>アンマネージ ANSI 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージ String にコピーし、
> 各 ANSI 文字を Unicode に拡張します。
どの部分がcharって意味なんですか?
ちなみにsize_t wLen = 0;errno_t err = 0;/*ロケール指定*/setlocale(LC_ALL,"japanese");/*変換*/err = wcstombs_s(&wLen, wStrC, 20, charmoji, _TRUNCATE);で直したらできました
398デフォルトの名無しさん
2011/10/29(土) 18:45:00.94 array<System::Windows::Forms::ToolStripMenuItem^>^ strips = gcnew array<System::Windows::Forms::StripMenuItem^>(5);
のstripsをフォームいじっても消えないところでグローバル宣言したいのですがどうすれば良いでしょうか?
のstripsをフォームいじっても消えないところでグローバル宣言したいのですがどうすれば良いでしょうか?
399デフォルトの名無しさん
2011/10/29(土) 19:27:05.70400デフォルトの名無しさん
2011/10/30(日) 00:13:45.13401デフォルトの名無しさん
2011/10/30(日) 00:22:47.79 arrayの内1つを消して間を詰めるにはどうしたら良いですか?
402デフォルトの名無しさん
2011/10/30(日) 00:25:17.38 無理。新しい配列を作ってコピーする。
403デフォルトの名無しさん
2011/10/30(日) 00:32:43.14 arrayって使わない方が良いんですか?
vectorとかの方が良いんですか?
vectorとかの方が良いんですか?
404デフォルトの名無しさん
2011/10/30(日) 00:35:25.75 .NETが絡むところでvectorは使うな
動的に要素数を変えたいならSystem::Collection::Generic::List<T>を使う
もういいからC#やれ
動的に要素数を変えたいならSystem::Collection::Generic::List<T>を使う
もういいからC#やれ
405デフォルトの名無しさん
2011/10/30(日) 00:36:42.68 じゃあ最後にC++/CLIのメリットを教えてください
406デフォルトの名無しさん
2011/10/30(日) 00:38:40.01 マゾ御用達
407デフォルトの名無しさん
2011/10/30(日) 00:53:12.14 キモかわいい
array<Hoge^>^%はC#だとref Hoge[]で味気ない
array<Hoge^>^%はC#だとref Hoge[]で味気ない
408デフォルトの名無しさん
2011/10/30(日) 21:28:13.45 for(int i=1;i<5;i++){this->textBox1->Text += (i + ". \n");}
改行しません。どうしてでしょうか?
改行しません。どうしてでしょうか?
409デフォルトの名無しさん
2011/10/30(日) 21:39:23.47 \r\nと書かないといけないのですね
ありがとうございました
ありがとうございました
410デフォルトの名無しさん
2011/10/31(月) 01:30:07.13 WCHAR *g; *g= this->textBox1->Text->ToCharArray()[0] ;
コンパイルは通るし画面のテキストボックスにも文字はちゃんと表示されてるのに
オブジェクト参照がオブジェクト インスタンスに設定されていません とエラーが出て止まります。どうすれば良いですか?
コンパイルは通るし画面のテキストボックスにも文字はちゃんと表示されてるのに
オブジェクト参照がオブジェクト インスタンスに設定されていません とエラーが出て止まります。どうすれば良いですか?
411デフォルトの名無しさん
2011/10/31(月) 02:45:15.47 ぬるぽ
412デフォルトの名無しさん
2011/10/31(月) 02:53:26.62 ちょwwぬるぽじゃなくて教えれwww
413デフォルトの名無しさん
2011/10/31(月) 06:25:43.59 ここまであからさまなぬるぽはないわ
414デフォルトの名無しさん
2011/10/31(月) 06:27:02.15 逝ってよし
415デフォルトの名無しさん
2011/10/31(月) 08:46:35.87 まぁ、pin_ptr が何のためにあるのか、という話だな
416デフォルトの名無しさん
2011/10/31(月) 23:46:48.11 C++/CLIのプロジェクトに
C#のソースも追加出来ますが(Prof以上のみ?)、
C++/CLIからそのC#のクラスを使えますか?
C#からC++/CLIのクラスは使えるようですが・・・
C#のソースも追加出来ますが(Prof以上のみ?)、
C++/CLIからそのC#のクラスを使えますか?
C#からC++/CLIのクラスは使えるようですが・・・
417デフォルトの名無しさん
2011/11/01(火) 00:03:00.11 C#のソースは知らんが、C++/CLIから.netのクラスやら機能を使うのは.netの機能使うのと同じ
418デフォルトの名無しさん
2011/11/01(火) 00:03:25.92 プロジェクトに追加するだけなら自由だが。
混ぜてコンパイルは無理。
dllを参照して使用するのは相互に可能。
混ぜてコンパイルは無理。
dllを参照して使用するのは相互に可能。
419デフォルトの名無しさん
2011/11/01(火) 00:35:20.55 やっぱ使えませんか
大人しくプロジェクト分けるしかないのですね・・・
大人しくプロジェクト分けるしかないのですね・・・
420デフォルトの名無しさん
2011/11/06(日) 15:39:11.10 アプリ起動中にpictureBox内に矩形を表示させておきたいのですが
どこにコードを書けばいいですか?
pictureBox_Paint内だと起動直後の一瞬しか表示されません
どこにコードを書けばいいですか?
pictureBox_Paint内だと起動直後の一瞬しか表示されません
421デフォルトの名無しさん
2011/11/06(日) 15:50:26.29 大方CreateGraphicsとか使ってるんじゃね
422デフォルトの名無しさん
2011/11/06(日) 16:39:49.74 その通りでした。ご指摘ありがとうございました
423デフォルトの名無しさん
2011/11/09(水) 16:12:12.50 インテリセンスマダー?
424デフォルトの名無しさん
2011/11/10(木) 07:34:24.84 質問です。
ネイティブ(アンマネージド)なC++の静的ライブラリを
C++/CLIでリンクして使うと変な所で死んだりするんだけど、
こういう事しちゃだめなのでしょうか?
一旦ネイティブなDLLを作って、そこを介して呼べば死なないのですが・・・。
そのライブラリは実装を隠蔽するため
クラスのインタフェース部分のみ公開して、
インスタンスの生成と開放を関数化してあるのですが、
つまりはnew/deleteがライブラリ内で実行され、
ライブラリ内でnewした結果を返し、マネージドコード内で保持し、
そのポインタをライブラリに渡してdeleteしてもらう形になっています。
よく分からないのは、わざとnewをせずポインタをNULLで初期化したままにしておき、
「NULLでなければ開放関数を呼ぶ」というコードを書いただけでも、
そこで死んでしまうのです。(NULLなので開放関数は呼ばれない!)
vectorヘッダをインクルードするかしないかで、死んだり死ななかったりと、
挙動がおかしすぎて正直よく分からない状況です。
ネイティブ(アンマネージド)なC++の静的ライブラリを
C++/CLIでリンクして使うと変な所で死んだりするんだけど、
こういう事しちゃだめなのでしょうか?
一旦ネイティブなDLLを作って、そこを介して呼べば死なないのですが・・・。
そのライブラリは実装を隠蔽するため
クラスのインタフェース部分のみ公開して、
インスタンスの生成と開放を関数化してあるのですが、
つまりはnew/deleteがライブラリ内で実行され、
ライブラリ内でnewした結果を返し、マネージドコード内で保持し、
そのポインタをライブラリに渡してdeleteしてもらう形になっています。
よく分からないのは、わざとnewをせずポインタをNULLで初期化したままにしておき、
「NULLでなければ開放関数を呼ぶ」というコードを書いただけでも、
そこで死んでしまうのです。(NULLなので開放関数は呼ばれない!)
vectorヘッダをインクルードするかしないかで、死んだり死ななかったりと、
挙動がおかしすぎて正直よく分からない状況です。
425デフォルトの名無しさん
2011/11/10(木) 16:05:38.55 ファイナライザが別スレッドから呼ばれるからとかじゃない
426デフォルトの名無しさん
2011/11/12(土) 18:54:13.34 using使ってるのでそこは大丈夫だと思います
427デフォルトの名無しさん
2011/11/12(土) 23:05:46.09 (gcnew Form1)->Show();
で作成されたフォームに
元のフォームにある文字列変数を渡す方法があったら教えてください
で作成されたフォームに
元のフォームにある文字列変数を渡す方法があったら教えてください
428デフォルトの名無しさん
2011/11/12(土) 23:10:34.52 コンストラクタの引数で渡すかプロパティ定義して渡す
つかそれだとC#もC++もさっぱりだよね? ならまだ遅くないから今すぐC#に乗り換えること。
つかそれだとC#もC++もさっぱりだよね? ならまだ遅くないから今すぐC#に乗り換えること。
429デフォルトの名無しさん
2011/11/13(日) 20:42:15.74 FindWindow で探すとか、EnumWindow でタイトルを調べるとか?
430デフォルトの名無しさん
2011/11/13(日) 21:12:34.82 Showする前に渡せば良い
431デフォルトの名無しさん
2011/11/13(日) 21:53:59.80 同じアプリ内でしかも.NETのフォームでFindWindow/EnumWindowとかアホか
432デフォルトの名無しさん
2011/11/17(木) 00:53:02.53 オブジェクトとメンバ関数名を与えられたときに、その関数を呼び出すことはリフレクションを介して簡単にできますが、
指定された名前のグローバル関数を呼び出すことは可能ですか?
指定された名前のグローバル関数を呼び出すことは可能ですか?
433デフォルトの名無しさん
2011/11/17(木) 01:19:51.91 .NETでグローバル関数なんて使うもんじゃない
クラスの静的メンバにする
クラスの静的メンバにする
434デフォルトの名無しさん
2011/11/17(木) 01:37:36.37 ですよねー。
435デフォルトの名無しさん
2011/11/17(木) 14:05:35.23 グローバル関数なんて無かったんや!
436デフォルトの名無しさん
2011/11/23(水) 22:13:47.85 自作したグローバル関数を書くのはどこが一番よろしいですか?
プロジェクト全体でつかうような関数です。
stdafx.hに書いたら
error LNK2005: "int __clrcall testfunc(void)" (?testfunc@@$$FYMHXZ) は既に stdafx.obj で定義されています。
ってエラーが出るのですが( ;∀;)
プロジェクト全体でつかうような関数です。
stdafx.hに書いたら
error LNK2005: "int __clrcall testfunc(void)" (?testfunc@@$$FYMHXZ) は既に stdafx.obj で定義されています。
ってエラーが出るのですが( ;∀;)
437デフォルトの名無しさん
2011/11/23(水) 23:10:37.60 そらそうだろ
C++/CLIというか、C++の基本から勉強し直してこい
C++/CLIというか、C++の基本から勉強し直してこい
438デフォルトの名無しさん
2011/12/07(水) 06:58:01.68 インクルードガード
439デフォルトの名無しさん
2011/12/07(水) 07:29:07.57 関数にstaticかinlineつけて内部結合にするがよろし
440デフォルトの名無しさん
2011/12/07(水) 15:36:45.42 ガードしても意味無いだろ。
別々のソースでインクルードされてコンパイルして、
それらをリンクしたら同じ名前の関数が複数出来上がってるわけだし。
と、ついでに質問者に説明してみる
別々のソースでインクルードされてコンパイルして、
それらをリンクしたら同じ名前の関数が複数出来上がってるわけだし。
と、ついでに質問者に説明してみる
441デフォルトの名無しさん
2011/12/07(水) 18:59:29.54 >>440
スマヌ
スマヌ
442デフォルトの名無しさん
2011/12/12(月) 18:04:16.59 あるサイトを参考にUnicodeからshift_jisに代えようとしてるんですが以下のコードで
cli::array<unsigned char^>^ ToShiftJis(System::String ^ unicodeStrings)
{
System::Text::Encoding^ unicode = System::Text::Encoding::GetEncoding(1200);
cli::array<unsigned char>^ unicodeByte = unicode->GetBytes(unicodeStrings);
System::Text::Encoding^ s_jis = System::Text::Encoding::GetEncoding(0);
cli::array<unsigned char>^ s_jisByte = System::Text::Encoding::Convert(unicode,s_jis,unicodeByte);
cli::array<unsigned char^>^ s_jisChars = gcnew cli::array<unsigned char^>(s_jis->GetCharCount(s_jisByte,0,s_jisByte->Length));
s_jis->GetChars(s_jisByte,0,s_jisByte->Length,s_jisChars,0);
return s_jisChars;
}
をビルドすると
error C2664: 'int System::Text::Encoding::GetChars(cli::array<Type> ^,int,int,cli::array<wchar_t,dimension> ^,int)' : 4 番目の引数を 'cli::array<Type> ^' から 'cli::array<Type,dimension> ^' に変換できません。
とエラーが出るのですが、どうすればよいのでしょう
どなたかご教示ください。
cli::array<unsigned char^>^ ToShiftJis(System::String ^ unicodeStrings)
{
System::Text::Encoding^ unicode = System::Text::Encoding::GetEncoding(1200);
cli::array<unsigned char>^ unicodeByte = unicode->GetBytes(unicodeStrings);
System::Text::Encoding^ s_jis = System::Text::Encoding::GetEncoding(0);
cli::array<unsigned char>^ s_jisByte = System::Text::Encoding::Convert(unicode,s_jis,unicodeByte);
cli::array<unsigned char^>^ s_jisChars = gcnew cli::array<unsigned char^>(s_jis->GetCharCount(s_jisByte,0,s_jisByte->Length));
s_jis->GetChars(s_jisByte,0,s_jisByte->Length,s_jisChars,0);
return s_jisChars;
}
をビルドすると
error C2664: 'int System::Text::Encoding::GetChars(cli::array<Type> ^,int,int,cli::array<wchar_t,dimension> ^,int)' : 4 番目の引数を 'cli::array<Type> ^' から 'cli::array<Type,dimension> ^' に変換できません。
とエラーが出るのですが、どうすればよいのでしょう
どなたかご教示ください。
443デフォルトの名無しさん
2011/12/12(月) 21:18:25.11 MFC の CString 使ったら?
444デフォルトの名無しさん
2011/12/13(火) 04:07:52.11 Encoding.GetChars()ってChar[]とるんじゃないのか?
関係ない型をボックス化して何がしたいの?
というか、Encoding.Convert()の時点で既にSJISになっているし
関係ない型をボックス化して何がしたいの?
というか、Encoding.Convert()の時点で既にSJISになっているし
445デフォルトの名無しさん
2011/12/13(火) 13:58:16.46 Hoge hoge[x];
の要素数はsizeof(hoge)/sizeof(hoge[0])で取得できますが
Hoge *hoge=new Hoge[x];
の要素数はどうやって取得すればいいですか?
の要素数はsizeof(hoge)/sizeof(hoge[0])で取得できますが
Hoge *hoge=new Hoge[x];
の要素数はどうやって取得すればいいですか?
446デフォルトの名無しさん
2011/12/13(火) 17:05:42.47 >>442
unsigned charに ^ は要らないと思うが
unsigned charに ^ は要らないと思うが
447デフォルトの名無しさん
2011/12/13(火) 20:58:34.89448デフォルトの名無しさん
2012/01/13(金) 18:39:32.59 System::Stringからchar*に変換する関数を書きました。
半角256文字以上のテキストを投げると、255文字+\0でめられてしまいます。
下記をどのように修正すればいいでしょうか?
#include <msclr/marshal.h>
inline char* toPtChar(const String^ Text)
{
String^ temp = (String^)Text;
msclr::interop::marshal_context^ context = gcnew msclr::interop::marshal_context();
return (char*)(context->marshal_as<const char*>(temp));
}
半角256文字以上のテキストを投げると、255文字+\0でめられてしまいます。
下記をどのように修正すればいいでしょうか?
#include <msclr/marshal.h>
inline char* toPtChar(const String^ Text)
{
String^ temp = (String^)Text;
msclr::interop::marshal_context^ context = gcnew msclr::interop::marshal_context();
return (char*)(context->marshal_as<const char*>(temp));
}
449448
2012/01/13(金) 18:45:03.89 >半角256文字以上のテキストを投げると、255文字+\0でめられてしまいます。
半角256文字以上の文字列を投げると、255文字+\0で丸められてしまいます。
2000文字程度変換できれば良いのですが、
の間違いです。すみません。
半角256文字以上の文字列を投げると、255文字+\0で丸められてしまいます。
2000文字程度変換できれば良いのですが、
の間違いです。すみません。
450448
2012/01/13(金) 19:43:34.29 関数を以下のように書き換えてSystem::String→char*しても、
やはり256文字以上は消えてしまいます。
関数ではなく、何か他に原因があるんでしょうか?
#include <msclr/marshal.h>
using namespace msclr::interop;
using namespace System::Runtime::InteropServices;
char* toPtChar(const String^ Text)
{
String^ foo = (String^)Text;
IntPtr ptr = Marshal::StringToHGlobalAnsi(foo);
return (char*)ptr.ToPointer();
}
http://is.gd/BgDTis
やはり256文字以上は消えてしまいます。
関数ではなく、何か他に原因があるんでしょうか?
#include <msclr/marshal.h>
using namespace msclr::interop;
using namespace System::Runtime::InteropServices;
char* toPtChar(const String^ Text)
{
String^ foo = (String^)Text;
IntPtr ptr = Marshal::StringToHGlobalAnsi(foo);
return (char*)ptr.ToPointer();
}
http://is.gd/BgDTis
451デフォルトの名無しさん
2012/01/16(月) 10:35:10.44 ttp://www.cetix.de/DotNetNews/Thread61630-String_to_string_-_truncates_at_255.aspx
これか?
試してないけど。
これか?
試してないけど。
452デフォルトの名無しさん
2012/01/18(水) 17:31:31.29 ◢▀▅ ▃
▋ ▋ ◢▀ ▀◣
▌ ▌ ▌ ▌
▌ ▌ ▌ ▌
▐ ▌ ▌ ▌
▐ ▀■ ▌
◢◤ ▀▃
◢◤ ◥◣
▌ ▌
▐ ● ● ▌ 馬鹿にはコピペできないの。
▌ ▌
◥◣ ╳ ◢◤
◢▀▅▃▂ ▂▂▃▅▀▅
◢◤ ▀▀▀▀▀ ◥◣
▐◣▃▌ ▐▃◢▌
◥◣▃▌ ▐▃◢◤
▀▅▃ ▂▅▀
▀■▆▅▅▅▆■█▀
▐▃▃▃▲▃▃▃◢▍
▋ ▋ ◢▀ ▀◣
▌ ▌ ▌ ▌
▌ ▌ ▌ ▌
▐ ▌ ▌ ▌
▐ ▀■ ▌
◢◤ ▀▃
◢◤ ◥◣
▌ ▌
▐ ● ● ▌ 馬鹿にはコピペできないの。
▌ ▌
◥◣ ╳ ◢◤
◢▀▅▃▂ ▂▂▃▅▀▅
◢◤ ▀▀▀▀▀ ◥◣
▐◣▃▌ ▐▃◢▌
◥◣▃▌ ▐▃◢◤
▀▅▃ ▂▅▀
▀■▆▅▅▅▆■█▀
▐▃▃▃▲▃▃▃◢▍
453デフォルトの名無しさん
2012/01/18(水) 17:32:09.47 ◢▀▅ ▃
▋ ▋ ◢▀ ▀◣
▌ ▌ ▌ ▌
▌ ▌ ▌ ▌
▐ ▌ ▌ ▌
▐ ▀■ ▌
◢◤ ▀▃
◢◤ ◥◣
▌ ▌
▐ ● ● ▌ 馬鹿にはコピペできないの。
▌ ▌
◥◣ ╳ ◢◤
◢▀▅▃▂ ▂▂▃▅▀▅
◢◤ ▀▀▀▀▀ ◥◣
▐◣▃▌ ▐▃◢▌
◥◣▃▌ ▐▃◢◤
▀▅▃ ▂▅▀
▀■▆▅▅▅▆■█▀
▐▃▃▃▲▃▃▃◢▍
▋ ▋ ◢▀ ▀◣
▌ ▌ ▌ ▌
▌ ▌ ▌ ▌
▐ ▌ ▌ ▌
▐ ▀■ ▌
◢◤ ▀▃
◢◤ ◥◣
▌ ▌
▐ ● ● ▌ 馬鹿にはコピペできないの。
▌ ▌
◥◣ ╳ ◢◤
◢▀▅▃▂ ▂▂▃▅▀▅
◢◤ ▀▀▀▀▀ ◥◣
▐◣▃▌ ▐▃◢▌
◥◣▃▌ ▐▃◢◤
▀▅▃ ▂▅▀
▀■▆▅▅▅▆■█▀
▐▃▃▃▲▃▃▃◢▍
454デフォルトの名無しさん
2012/01/18(水) 18:05:42.86 日本の国民の中には、外国の事情がある程度分かっている人を除けば、
放送内容を信頼している人がまだいることは確かだ。一方で、ネット
住民たちのほぼ全員が、放送番組には政府の意図が色濃く反映されて
いることを知っている。自分の国がどういう国かということが、よく
分かるようになってきているのだ。
放送内容を信頼している人がまだいることは確かだ。一方で、ネット
住民たちのほぼ全員が、放送番組には政府の意図が色濃く反映されて
いることを知っている。自分の国がどういう国かということが、よく
分かるようになってきているのだ。
455デフォルトの名無しさん
2012/01/20(金) 23:34:30.86 失礼します。色々まわっていたのですが此方を勧められたので此方でも質問させて頂きます。
VC++でWindowsフォームのプログラムを組んでいるのですが、
別ファイルでextern宣言したクラス(の配列)をform1.h等で参照したいのですがコンストラクタが上手く働いてくれないのか、宣言の場所が悪いのか
ゴミ値ばかりで上手く動作してくれません。
何かヒントもらえませんか?
VC++でWindowsフォームのプログラムを組んでいるのですが、
別ファイルでextern宣言したクラス(の配列)をform1.h等で参照したいのですがコンストラクタが上手く働いてくれないのか、宣言の場所が悪いのか
ゴミ値ばかりで上手く動作してくれません。
何かヒントもらえませんか?
456デフォルトの名無しさん
2012/01/21(土) 02:53:36.13 ソース貼るか
エラー貼るか
何かヒントもらえませんか?
エラー貼るか
何かヒントもらえませんか?
457デフォルトの名無しさん
2012/01/21(土) 23:51:21.19 いきなりcharではなくwchar_tに変換
でWinAPI使ってcharに
でWinAPI使ってcharに
458デフォルトの名無しさん
2012/01/22(日) 11:17:33.74 >>455
コードも何も書かれてないから憶測でしかないが、newとgc_newを使い分けてないとか、*と^を使い分けてないとか、その辺じゃない?
後は配列が.netのクラスをちゃんと継承してないとか
生のC++とC++/CLIは全くと言って良いほど別言語で、でも生のC++も使えちゃうからC#とC++の合わせ技より罠が多く、バグが多くなり易いよ
コードも何も書かれてないから憶測でしかないが、newとgc_newを使い分けてないとか、*と^を使い分けてないとか、その辺じゃない?
後は配列が.netのクラスをちゃんと継承してないとか
生のC++とC++/CLIは全くと言って良いほど別言語で、でも生のC++も使えちゃうからC#とC++の合わせ技より罠が多く、バグが多くなり易いよ
459デフォルトの名無しさん
2012/01/23(月) 11:32:22.34 publicにしてないとか
460デフォルトの名無しさん
2012/01/23(月) 12:35:15.69 dll が違うとか
461デフォルトの名無しさん
2012/02/21(火) 23:29:28.14 VC++のプロジェクトのwindowsフォームアプリでOpenMPって使えないんですかね?
'/clr:pure' と '/openmp' は同時に指定できません
ってエラーが出てるんで、CLIでは使えないのかな?とか思ったりしたんですがどうでしょう
'/clr:pure' と '/openmp' は同時に指定できません
ってエラーが出てるんで、CLIでは使えないのかな?とか思ったりしたんですがどうでしょう
462デフォルトの名無しさん
2012/02/21(火) 23:38:46.12 /clr:pureで使えるわけがないだろネイティブコード入れられないんだから
/clrならどう?
っていうかWindowsフォーム使いたいだけだったら終わってるC++/CLIなんてやめて
C#でGUI作って重い計算だけC++(/CLIでない)で書いてC#から呼んだほうがいいよ
/clrならどう?
っていうかWindowsフォーム使いたいだけだったら終わってるC++/CLIなんてやめて
C#でGUI作って重い計算だけC++(/CLIでない)で書いてC#から呼んだほうがいいよ
463デフォルトの名無しさん
2012/02/24(金) 20:06:17.85 >>461 です
/clrならできました。ありがとうございます。
よくわかっていないのですが、/clr:pureにしていたのはネイティブとごっちゃになって
変なことになるのを防ぐためなんですかね?だから/clrとしてもそこらへんを気をつければ
問題ない、ということでいいんでしょうか?
C++/CLIは初めてなんで、どう”終わってる”のかわかりませんが、C#はやったことが無いので、
できればこっちでやりたいところなんです。
/clrならできました。ありがとうございます。
よくわかっていないのですが、/clr:pureにしていたのはネイティブとごっちゃになって
変なことになるのを防ぐためなんですかね?だから/clrとしてもそこらへんを気をつければ
問題ない、ということでいいんでしょうか?
C++/CLIは初めてなんで、どう”終わってる”のかわかりませんが、C#はやったことが無いので、
できればこっちでやりたいところなんです。
464デフォルトの名無しさん
2012/02/24(金) 20:20:54.26 大丈夫だ、C++経験者からしてもC++/CLIの習得よりC#の習得の方が楽だから
465デフォルトの名無しさん
2012/02/24(金) 20:21:49.18 /clr:pureだとアセンブリにネイティブコードが混ざらない。
ネイティブコードを混ぜないC++/CLIなんて存在価値ゼロだから、C++/CLI使うんなら常に/clrでおk。
C#をやれ。いくらC++の経験があろうが関係ない。間違いなくC#の方が早く使えるようになるし
開発効率に天と地ほどの差がある。C++/CLIはMSに完全に見捨てられている技術。
ネイティブコードを混ぜないC++/CLIなんて存在価値ゼロだから、C++/CLI使うんなら常に/clrでおk。
C#をやれ。いくらC++の経験があろうが関係ない。間違いなくC#の方が早く使えるようになるし
開発効率に天と地ほどの差がある。C++/CLIはMSに完全に見捨てられている技術。
466デフォルトの名無しさん
2012/02/24(金) 20:25:20.13 VS2010ではもうインテリセンスすら付けてくれてないもんね
467デフォルトの名無しさん
2012/02/24(金) 21:09:13.08 C#やってみます。
過去のレス見てきたんですけど、ひどい言われようですね
あと、あんま書き込み無いのにレスは早くて面白かったです。
過去のレス見てきたんですけど、ひどい言われようですね
あと、あんま書き込み無いのにレスは早くて面白かったです。
468デフォルトの名無しさん
2012/02/27(月) 08:13:52.05 いろいろと屈折した愛があるからなw
469デフォルトの名無しさん
2012/02/29(水) 02:03:40.75 俺はこのスレに張り付いてるけど一応ちょっと待ってからレスしてるわ
470デフォルトの名無しさん
2012/03/02(金) 07:33:50.86 呼び出し規約がよくわからないのですが、関数を宣言した場所で明示しない場合
・引数・返り値の型にマネージ型が含まれる→__clrcall になる
・含まれない→__stdcall になる。実装がマネージドコードにコンパイルされると、double-thunkingになる
という理解であっているでしょうか。
また、非マネージ型のメンバ関数においては、
managed-code -> __thiscall stub -> __clrcall のような double-thunking が発生するのでしょうか?
・引数・返り値の型にマネージ型が含まれる→__clrcall になる
・含まれない→__stdcall になる。実装がマネージドコードにコンパイルされると、double-thunkingになる
という理解であっているでしょうか。
また、非マネージ型のメンバ関数においては、
managed-code -> __thiscall stub -> __clrcall のような double-thunking が発生するのでしょうか?
471デフォルトの名無しさん
2012/03/07(水) 16:17:15.87 VS11βでもインテリセンス無いかな?
472デフォルトの名無しさん
2012/03/08(木) 00:59:01.93 今ちょっと打ってみたが効くみたいだよ。
473デフォルトの名無しさん
2012/03/13(火) 21:11:04.75 C1001 が出た。
みんな報告してる?
みんな報告してる?
474デフォルトの名無しさん
2012/03/14(水) 04:07:10.11 可能な限りする
475デフォルトの名無しさん
2012/03/14(水) 11:15:03.77 やっぱそうだよな。VS11Betaで試してconnect行くわ。
476デフォルトの名無しさん
2012/03/15(木) 09:53:47.89 VS11betaでもやっぱりIntellisSense効かなくて
"No additional information available"って言われるんだけど
何が悪いんだろう
ButtonとTextBox置いてButtonのイベントハンドラの中で
textBox1->とかやってるだけなんだけど
最初のt打っただけで上のエラーが出て
->まで打ってもエラー出たままでメンバも表示されない
"No additional information available"って言われるんだけど
何が悪いんだろう
ButtonとTextBox置いてButtonのイベントハンドラの中で
textBox1->とかやってるだけなんだけど
最初のt打っただけで上のエラーが出て
->まで打ってもエラー出たままでメンバも表示されない
477デフォルトの名無しさん
2012/03/15(木) 20:40:01.46 http://homepage3.nifty.com/ishidate/vcpp10_20/vcpp10_20.htm
ここの一番下の図5は図6用の計算式はどの様に記入すれば良いのですか。
ここの一番下の図5は図6用の計算式はどの様に記入すれば良いのですか。
478デフォルトの名無しさん
2012/03/16(金) 10:49:25.88 function1のとこだろ
どう考えてもC++/CLIでやるべきことじゃないよなこれ
内容は凄いのに…C#にすれば…
どう考えてもC++/CLIでやるべきことじゃないよなこれ
内容は凄いのに…C#にすれば…
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 【テレビ】粗品「THE W」バッサリ「おもんない、レベル低い」審査員就任で「日テレが“血の海”に…」 [湛然★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 死にてえやつこい
- 【朗報】アメリカ、貿易赤字が市場予想を超える大幅縮小WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 【東京新聞】「偽サッチャー」「自滅的」「時代遅れ」高市首相の経済政策を海外メディアが酷評www [718678614]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】女性「スタバで癒やされに来たのに、小汚いおっさんがいたあ!!😭」 [769050516]
