おそらく、.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
535デフォルトの名無しさん
2012/06/27(水) 14:24:02.48536デフォルトの名無しさん
2012/06/27(水) 14:50:42.50 まあ素直にstaticつけようぜ
537デフォルトの名無しさん
2012/06/27(水) 15:05:30.83538デフォルトの名無しさん
2012/06/27(水) 15:12:22.35 仮想関数じゃねーんだから、実体があるとかどうとか関係無い。
単に関数呼んでるだけだ、未定義のthisポインタでな。
単に関数呼んでるだけだ、未定義のthisポインタでな。
539デフォルトの名無しさん
2012/06/27(水) 15:24:21.57 >>537
>実体がなかったら動くわけないし
ところがCやC++では動く。
速度重視のため、安全確保のための自動チェックなどは行われない。
そしてメンバ変数に代入すると何処とも知れないメモリアドレスを書き換えて
所謂セキュリティホールになったりする。
メモリアクセス違反で強制終了するのはまだ良い方。
>実体がなかったら動くわけないし
ところがCやC++では動く。
速度重視のため、安全確保のための自動チェックなどは行われない。
そしてメンバ変数に代入すると何処とも知れないメモリアドレスを書き換えて
所謂セキュリティホールになったりする。
メモリアクセス違反で強制終了するのはまだ良い方。
540デフォルトの名無しさん
2012/06/27(水) 15:30:07.51 >>539
いあいあ、実体というか、どこかに機械語のコードがなかったら動くわけないですよね?
その場所がわからないとうか、管理されてないというかんじなのかな?
OSが管理してて、そのOSによるということなのかなあ
いあいあ、実体というか、どこかに機械語のコードがなかったら動くわけないですよね?
その場所がわからないとうか、管理されてないというかんじなのかな?
OSが管理してて、そのOSによるということなのかなあ
541デフォルトの名無しさん
2012/06/27(水) 15:35:31.60 しったかしてるから初心者みたいな勘違いしたままなんだよ
542デフォルトの名無しさん
2012/06/27(水) 15:36:54.37543デフォルトの名無しさん
2012/06/27(水) 15:44:18.84 C++/CLIってC++と.NET両方の知識がある人向けだから
そうでない人はC#でP/Invokeを使った方がいいと思う。
そうでない人はC#でP/Invokeを使った方がいいと思う。
544デフォルトの名無しさん
2012/06/28(木) 01:46:27.01 今更だけど、pragma managed も push pop できたと思うよ。
545デフォルトの名無しさん
2012/06/28(木) 09:51:50.05 まあヘッダに入れてるしC++勉強始めて3日くらいの知識でC++/CLIとごっちゃで勉強すると
後で困ると思うがなあ
後で困ると思うがなあ
546デフォルトの名無しさん
2012/07/03(火) 11:14:40.00 VisualC++の入門書を買って来たらC++/CLIの本だったのは良い思い出・・・
547デフォルトの名無しさん
2012/07/03(火) 14:15:43.34 「シー教えてくれ」と言われ見たらC#
548デフォルトの名無しさん
2012/07/04(水) 11:10:26.99 そのときの「シー」は半音上がってたんだろうw
549デフォルトの名無しさん
2012/07/08(日) 14:06:13.60 >>548
うまいw
うまいw
550デフォルトの名無しさん
2012/07/13(金) 12:10:27.73 C++/CLI で暗黙のバッキングストア使うとき、get/setで異なるスコープにすることはできますか?
C# であれば public Hoge { get; protected set; } のような感じで。
ちなみに今使っているのはVS2008です。
C# であれば public Hoge { get; protected set; } のような感じで。
ちなみに今使っているのはVS2008です。
551デフォルトの名無しさん
2012/07/13(金) 21:51:43.58 出来るよ。
ref class Clazz
{
property int XXX
{
private:
void set(int iA);
public:
int get();
}
};
ref class Clazz
{
property int XXX
{
private:
void set(int iA);
public:
int get();
}
};
552デフォルトの名無しさん
2012/07/13(金) 22:09:27.40553デフォルトの名無しさん
2012/07/19(木) 19:16:48.08 XmlTextReaderでxmlファイルを読み込むとき,ファイルがあるかないかの判別はどうすればいいですか?
554デフォルトの名無しさん
2012/07/19(木) 19:22:48.77 例外見ればいいだろ
555553
2012/07/19(木) 19:31:55.14 msdnにあるFileNotFoundExceptionを使うのでしょうか?
使い方がいまいちわかりません・・・
恐縮ですができればサンプルコードを書いていただけませんか?
XmlTextReader^ reader = gcnew XmlTextReader( "sample.xml" );
使い方がいまいちわかりません・・・
恐縮ですができればサンプルコードを書いていただけませんか?
XmlTextReader^ reader = gcnew XmlTextReader( "sample.xml" );
556デフォルトの名無しさん
2012/07/19(木) 21:32:34.53 XmlTextReaderのコンストラクタを直接触るのは非推奨
try { XmlReader^ reader = XmlReader.Create( "sample.xml" ); }
catch (FileNotFoundException^ ex) { Console::WriteLine("ファイルが見つかりません。"); }
C++/CLIは君みたいな人が足を踏み入れるようなもんじゃないし
頑張ったところで特にメリットもない
今すぐC#かネイティブのC++へ移行することを強くお勧めする
try { XmlReader^ reader = XmlReader.Create( "sample.xml" ); }
catch (FileNotFoundException^ ex) { Console::WriteLine("ファイルが見つかりません。"); }
C++/CLIは君みたいな人が足を踏み入れるようなもんじゃないし
頑張ったところで特にメリットもない
今すぐC#かネイティブのC++へ移行することを強くお勧めする
557556
2012/07/19(木) 21:37:22.99 C#とごっちゃになってた
XmlReader::Createの間違い
XmlReader::Createの間違い
558553
2012/07/19(木) 22:01:25.04559デフォルトの名無しさん
2012/07/19(木) 22:11:53.24 悪いことは言わん
どうしてもC++/CLIを使わないといけないのなら、まずはC#を覚えるのが近道だ
C#なら入門者向けの書籍やサイトなどもいくらでもあるし、
C++/CLIの.NETの部分はC#もどきの劣化版にすぎない。
どうしてもC++/CLIを使わないといけないのなら、まずはC#を覚えるのが近道だ
C#なら入門者向けの書籍やサイトなどもいくらでもあるし、
C++/CLIの.NETの部分はC#もどきの劣化版にすぎない。
560553
2012/07/20(金) 00:50:32.54561デフォルトの名無しさん
2012/07/20(金) 10:49:26.48 なぁ、実際C++/CLIの利点て具体的にどうなの?
C++で作ったライブラリもユニコード使用でないとオーバーヘッドかかるし
.NET側にC++クラスのオブジェクトを入れるとポインタ使用になるし。
まぁ、パソコンも進化続けるから、アプリの重さも気にはなくなるだろうけど。
C++で作ったライブラリもユニコード使用でないとオーバーヘッドかかるし
.NET側にC++クラスのオブジェクトを入れるとポインタ使用になるし。
まぁ、パソコンも進化続けるから、アプリの重さも気にはなくなるだろうけど。
562デフォルトの名無しさん
2012/07/20(金) 11:24:54.04 ホスト:アンマネージ、プラグイン:.NETの場合は、C++/CLIなしでやろうとすると
COMを経由してCLRをホストしたりとかクソ面倒臭い
.NETからC++のクラスを使いたい場合、C++/CLIではなくDllImportを使うとなると
いったんC向けのフラットなインターフェイスにラップしてやらないといけなくてクソ面倒臭い
どっちにしろC#とアンマネージC++を両方使う場合にのみ役に立つ
COMを経由してCLRをホストしたりとかクソ面倒臭い
.NETからC++のクラスを使いたい場合、C++/CLIではなくDllImportを使うとなると
いったんC向けのフラットなインターフェイスにラップしてやらないといけなくてクソ面倒臭い
どっちにしろC#とアンマネージC++を両方使う場合にのみ役に立つ
563デフォルトの名無しさん
2012/08/02(木) 20:07:41.60 質問させて下さい。
visual studio 2005でC++/CLIを用いて開発を行なっています。
ref struct AA
{
public:
int a1;
}
refクラスの上記のような構造体を定義してそのオブジェクトを2つ作り、
AA a, aa;
a = aa; (例なので初期化せずに代入しています)
とすると「error C2582; 'operator '=' 関数を 'AA' で使用できません」となってしまいます。
実際にはrefクラスの構造体を引数として渡したかったのですがC2664になってしまいビルドが通りませんでした。
そこで一番単純な構造体の代入コードを記述したところ、上記のようなエラーとなりあました。
いろいろ調べてみると、refクラスはコピーインスタンスとコピー代入演算子をデフォルトで自動生成しない
ということが原因かと考えたのですが対策が思いつきません。
refクラスの構造体の代入とコピーの方法をご教授いただければ幸いです。よろしくお願い致します。
visual studio 2005でC++/CLIを用いて開発を行なっています。
ref struct AA
{
public:
int a1;
}
refクラスの上記のような構造体を定義してそのオブジェクトを2つ作り、
AA a, aa;
a = aa; (例なので初期化せずに代入しています)
とすると「error C2582; 'operator '=' 関数を 'AA' で使用できません」となってしまいます。
実際にはrefクラスの構造体を引数として渡したかったのですがC2664になってしまいビルドが通りませんでした。
そこで一番単純な構造体の代入コードを記述したところ、上記のようなエラーとなりあました。
いろいろ調べてみると、refクラスはコピーインスタンスとコピー代入演算子をデフォルトで自動生成しない
ということが原因かと考えたのですが対策が思いつきません。
refクラスの構造体の代入とコピーの方法をご教授いただければ幸いです。よろしくお願い致します。
564デフォルトの名無しさん
2012/08/02(木) 20:16:58.19 で、値をコピーしたいの? 参照だけで良いの?
value struct AA じゃ駄目?
^は知ってる?
value struct AA じゃ駄目?
^は知ってる?
565563
2012/08/04(土) 11:12:00.62 >>564
レスありがとうございます。
私の勉強不足のため、クラスライブラリ側の宣言はref structで宣言しないとダメだと思い込んでいました。
しかも、クラスライブラリ以外のプロジェクトでも同様の結果になるため、勝手に環境の説明を省いてしまいました。
申し訳ありません。
ご指摘の通り、value structにすることで解決できました。ありがとうございました。
レスありがとうございます。
私の勉強不足のため、クラスライブラリ側の宣言はref structで宣言しないとダメだと思い込んでいました。
しかも、クラスライブラリ以外のプロジェクトでも同様の結果になるため、勝手に環境の説明を省いてしまいました。
申し訳ありません。
ご指摘の通り、value structにすることで解決できました。ありがとうございました。
566デフォルトの名無しさん
2012/08/07(火) 23:03:24.56 PathCombainのstd::string版ってないですかね?
567デフォルトの名無しさん
2012/08/09(木) 09:35:42.88 この本って古本で定価の倍でも買う価値あります?
実践C++/CLI 極めるための基礎と実用テクニック
http://www.amazon.co.jp/dp/4797336277/
最近、DirectXをWPFから呼び出す必要が出てきて……
でも、VS2012と.NET4.0が出たときに
新しい本がいろいろ出版されるような気もしますよね……
実践C++/CLI 極めるための基礎と実用テクニック
http://www.amazon.co.jp/dp/4797336277/
最近、DirectXをWPFから呼び出す必要が出てきて……
でも、VS2012と.NET4.0が出たときに
新しい本がいろいろ出版されるような気もしますよね……
568デフォルトの名無しさん
2012/08/09(木) 12:10:48.40 2012は4.5だ
569デフォルトの名無しさん
2012/08/09(木) 18:33:32.45 >>567
SlimDXを使うか、読めば足りるんじゃないか。
SlimDXを使うか、読めば足りるんじゃないか。
570デフォルトの名無しさん
2012/08/10(金) 10:02:39.92 使いたいDirectXの機能によっても代わるよなぁ
571デフォルトの名無しさん
2012/08/10(金) 13:32:29.83 > マイクロソフトから、お客様のアプリケーションがたくさんの人々の目に触れ、
> 試用および購入されるのをサポートする、新しい特典をお知らせいたします。
> MSDN サブスクライバーであるお客様は、1 回のご購入で 12 か月有効な
> Windows ストアおよび Windows Phone の開発者アカウントを取得すること
> ができます。
AzureはVLで買っても契約期間分使えるのに(厳密にいうと少し違うが)、
これはVL(2or3年)で買ってると悲しいな。
> 試用および購入されるのをサポートする、新しい特典をお知らせいたします。
> MSDN サブスクライバーであるお客様は、1 回のご購入で 12 か月有効な
> Windows ストアおよび Windows Phone の開発者アカウントを取得すること
> ができます。
AzureはVLで買っても契約期間分使えるのに(厳密にいうと少し違うが)、
これはVL(2or3年)で買ってると悲しいな。
572デフォルトの名無しさん
2012/08/10(金) 13:34:07.44 テラ誤爆…サーセン
573デフォルトの名無しさん
2012/08/10(金) 14:19:24.98574デフォルトの名無しさん
2012/08/11(土) 01:18:09.35 (;´д`)アアン
575すとら
2012/08/14(火) 03:35:57.72 VS2010でフォームアプリの勉強をしています。
unmanagedクラスで別スレッドにて不定期で呼ばれる関数から、
managedなフォームの内容を変更したいと考えています。
下記のようにコーディングしましたが、stackoverflow(InvokeRequiredがずっとtrueのため)
で動きません。。どなたか適切な方法を教えていただけないですか?
1.managedなformメソッドとしてform編集メソッド作成
2.スレッドセーフにするためInvokeでラップ
参考:http://blogs.yahoo.co.jp/fireis_myblood/25643271.html
3.delegate->Marshal::GetFunctionPointerForDelegate()でポインタ化
4.unmanagedの不定期呼び出され関数に2の関数ポインタを設定
5.実行
unmanagedクラスで別スレッドにて不定期で呼ばれる関数から、
managedなフォームの内容を変更したいと考えています。
下記のようにコーディングしましたが、stackoverflow(InvokeRequiredがずっとtrueのため)
で動きません。。どなたか適切な方法を教えていただけないですか?
1.managedなformメソッドとしてform編集メソッド作成
2.スレッドセーフにするためInvokeでラップ
参考:http://blogs.yahoo.co.jp/fireis_myblood/25643271.html
3.delegate->Marshal::GetFunctionPointerForDelegate()でポインタ化
4.unmanagedの不定期呼び出され関数に2の関数ポインタを設定
5.実行
576デフォルトの名無しさん
2012/08/14(火) 04:28:26.47 Marshal::GetFunctionPointerForDelegate の返り値を CreateThread の第四引数に渡して別スレッドから呼んでみたけど、
別スレッドからの呼び出しでは InvokeRequired は true になって、そこで Invoke した先では false になったよ。
別スレッドからの呼び出しでは InvokeRequired は true になって、そこで Invoke した先では false になったよ。
577デフォルトの名無しさん
2012/08/14(火) 04:34:54.96 たぶんやりたいのはこうだと思うんだけど、違うかな。
DWORD WINAPI proc(LPVOID param) {
typedef void (*fp_t)(void);
fp_t fp = reinterpret_cast<fp_t>(param);
for(int i = 0; i < 10; ++i) {
::Sleep(1000);
fp();
}
return 0;
}
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
IntPtr fp = Marshal::GetFunctionPointerForDelegate(gcnew MethodInvoker(this, &CppCli575::Form1::addText));
::CreateThread(NULL, 8192, proc, static_cast<LPVOID>(fp), 0, NULL);
}
void addText() {
if (textBox1->InvokeRequired) {
textBox1->Invoke(gcnew MethodInvoker(this, &CppCli575::Form1::addText));
return;
}
textBox1->Text += "A";
}
DWORD WINAPI proc(LPVOID param) {
typedef void (*fp_t)(void);
fp_t fp = reinterpret_cast<fp_t>(param);
for(int i = 0; i < 10; ++i) {
::Sleep(1000);
fp();
}
return 0;
}
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
IntPtr fp = Marshal::GetFunctionPointerForDelegate(gcnew MethodInvoker(this, &CppCli575::Form1::addText));
::CreateThread(NULL, 8192, proc, static_cast<LPVOID>(fp), 0, NULL);
}
void addText() {
if (textBox1->InvokeRequired) {
textBox1->Invoke(gcnew MethodInvoker(this, &CppCli575::Form1::addText));
return;
}
textBox1->Text += "A";
}
578デフォルトの名無しさん
2012/08/14(火) 08:45:11.72 >>577
MethodInvoker^はメンバ変数に置いとかないと
MethodInvoker^はメンバ変数に置いとかないと
579デフォルトの名無しさん
2012/08/14(火) 10:12:04.44 日本人は マスコミ電波で動く ロボット人間
日本人は、先進諸国で飛び抜けてマスコミ報道を鵜呑みに
信じやすいことがこの動画で実証されています。
いわばマスコミ報道の「鵜呑度」を国際比較すると、
日本人は、先進国中ダントツに「鵜呑度」が高く70%、
最も低い国民は英国で14%です。
その他の主要欧米諸国(ロシアを含め)は20−35%です。
日本に近い国は、ナイジェリア、中国など、途上国と新興国となります。
別の言い方をすれば、日本人の70%は、
自分の頭で考えず(思考停止)、
テレビ、新聞、週刊誌などのマスコミの情報を鵜呑みにしていることを意味します。
青山は以前からこれを「観客民主主義」と言っています。
観客民主主義は、マスコ ミの情報操作による世論誘導に最も陥りやすく、
独裁にも呼応しやすい特性を持っています。
マスコミ報道「鵜呑度」
日本人70%、英国人14% You Tube
http://www.youtube.com/watch?v=ypPqsWUC6Vo
http://www.asyura2.com/12/senkyo132/msg/578.html
日本人は、先進諸国で飛び抜けてマスコミ報道を鵜呑みに
信じやすいことがこの動画で実証されています。
いわばマスコミ報道の「鵜呑度」を国際比較すると、
日本人は、先進国中ダントツに「鵜呑度」が高く70%、
最も低い国民は英国で14%です。
その他の主要欧米諸国(ロシアを含め)は20−35%です。
日本に近い国は、ナイジェリア、中国など、途上国と新興国となります。
別の言い方をすれば、日本人の70%は、
自分の頭で考えず(思考停止)、
テレビ、新聞、週刊誌などのマスコミの情報を鵜呑みにしていることを意味します。
青山は以前からこれを「観客民主主義」と言っています。
観客民主主義は、マスコ ミの情報操作による世論誘導に最も陥りやすく、
独裁にも呼応しやすい特性を持っています。
マスコミ報道「鵜呑度」
日本人70%、英国人14% You Tube
http://www.youtube.com/watch?v=ypPqsWUC6Vo
http://www.asyura2.com/12/senkyo132/msg/578.html
580デフォルトの名無しさん
2012/08/14(火) 12:21:37.43 >578
たしかにGCされるとだめですね。フォローどうも。
たしかにGCされるとだめですね。フォローどうも。
581575
2012/08/15(水) 03:56:45.46 >> 576-577
ありがとうございます。
実装してみたところ、確かに望みの動作をしました!!
なぜ自分のコードが動かないか突き止めるために
教えていただいたコードを変更していますが、別の問題にもつまづきました。。
申し訳ないですがもう少し教えてください。
<当面の問題:うまくコンパイルできない>
関数procを、クラス内のstaticメソッドに変更しようとした(下記)。
#コンパイル時に、未解決のトークン (0A000043) "public: static void (__cdecl* test2ch::Testproc::fp)(void)"とのエラーが発生。
class Testproc
{
typedef void (*fp_t)(void);
static fp_t fp;
public:
Testproc(LPVOID func)
{
fp = reinterpret_cast<fp_t>(func);
::CreateThread(NULL, 8192, (LPTHREAD_START_ROUTINE)Testproc::proc1, this, 0, NULL);
}
DWORD static WINAPI proc1(void)
{
for (int i = 0; i<10; ++i){
::Sleep(1000);
Testproc::fp();
}
return 0;
}
};
ありがとうございます。
実装してみたところ、確かに望みの動作をしました!!
なぜ自分のコードが動かないか突き止めるために
教えていただいたコードを変更していますが、別の問題にもつまづきました。。
申し訳ないですがもう少し教えてください。
<当面の問題:うまくコンパイルできない>
関数procを、クラス内のstaticメソッドに変更しようとした(下記)。
#コンパイル時に、未解決のトークン (0A000043) "public: static void (__cdecl* test2ch::Testproc::fp)(void)"とのエラーが発生。
class Testproc
{
typedef void (*fp_t)(void);
static fp_t fp;
public:
Testproc(LPVOID func)
{
fp = reinterpret_cast<fp_t>(func);
::CreateThread(NULL, 8192, (LPTHREAD_START_ROUTINE)Testproc::proc1, this, 0, NULL);
}
DWORD static WINAPI proc1(void)
{
for (int i = 0; i<10; ++i){
::Sleep(1000);
Testproc::fp();
}
return 0;
}
};
582575
2012/08/15(水) 04:00:38.88 連投すみません。
ちなみに、元の問題の原因究明のために今後確認したいことは
(staticメソッドでラッパした)インスタンスメソッドとしてproc1()を定義し、
proc1()内ではstaticではない関数ポインタfpを実行するように変更して
スレッドを実行して所望の動作(formが変更できる)かどうかを確認
です。
ちなみに、元の問題の原因究明のために今後確認したいことは
(staticメソッドでラッパした)インスタンスメソッドとしてproc1()を定義し、
proc1()内ではstaticではない関数ポインタfpを実行するように変更して
スレッドを実行して所望の動作(formが変更できる)かどうかを確認
です。
583デフォルトの名無しさん
2012/08/15(水) 21:02:13.28585デフォルトの名無しさん
2012/10/18(木) 17:07:44.86 コンパイルが通りません
教えて下さい
ref class Test
{
bool& Bl;
Test(bool& bl)
{
Bl = bl;
}
};
教えて下さい
ref class Test
{
bool& Bl;
Test(bool& bl)
{
Bl = bl;
}
};
586デフォルトの名無しさん
2012/10/18(木) 17:11:57.85 Test(bool& bl):Bl(bl){
}
}
587デフォルトの名無しさん
2012/10/18(木) 17:30:32.24588デフォルトの名無しさん
2012/10/25(木) 19:29:47.52 画面周りだけCLI使ってそこから呼び出すのはPUREなC++にしている
589デフォルトの名無しさん
2012/10/25(木) 23:09:06.37 最初はそういう使い方してたけど
最近はp/invokeがあるからC#で別段問題ない
最近はp/invokeがあるからC#で別段問題ない
590デフォルトの名無しさん
2012/10/29(月) 12:21:58.58 最初から/CXの構想で作れなかったのかねえ
591デフォルトの名無しさん
2012/10/29(月) 15:20:01.15 >>588→画面をC#にしたら簡単すぎワロタ→内部もC#にしても速度変わんなかった→もうC#だけでいいや
592デフォルトの名無しさん
2012/10/29(月) 22:32:04.19 既存のC++のライブラリがある場合はC#から呼び出しまくると速度ゲロ重
593デフォルトの名無しさん
2012/10/30(火) 00:03:22.69 C++/CLIから呼んでもC#から呼んでも速度は変わらんよ
C++のライブラリはC#だとラップするのがゲロ面倒だから、その点ではC++/CLIが有利
でも本当に速度を求めるんなら、C++/CLIでもC#でも細かくネイティブコードを呼ばないで
必要なデータをまとめて受け渡しするようにして、
細かいところは全部ネイティブコードで書いてしまうのがいい
C++のライブラリはC#だとラップするのがゲロ面倒だから、その点ではC++/CLIが有利
でも本当に速度を求めるんなら、C++/CLIでもC#でも細かくネイティブコードを呼ばないで
必要なデータをまとめて受け渡しするようにして、
細かいところは全部ネイティブコードで書いてしまうのがいい
594デフォルトの名無しさん
2012/10/30(火) 00:11:42.83 >C++/CLIから呼んでもC#から呼んでも速度は変わらんよ
C++ InteropはP/Invokeより高速だよ
http://msdn.microsoft.com/ja-jp/library/ky8kkddw%28VS.80%29.aspx
他のところは同意。まとまった単位でネイティブに切り出さないと高速化の恩恵は薄い。下手するとC#より遅くなる。
C++ InteropはP/Invokeより高速だよ
http://msdn.microsoft.com/ja-jp/library/ky8kkddw%28VS.80%29.aspx
他のところは同意。まとまった単位でネイティブに切り出さないと高速化の恩恵は薄い。下手するとC#より遅くなる。
595デフォルトの名無しさん
2012/10/30(火) 00:28:06.09 変なマーシャリングしないようにすればC#のDllImportでもそんなに遅くはならないよ
アプリに即した形でまとめてネイティブコードで処理、を突き詰めると
結局C++(not CLI)とC#でいいんだよなあ
アプリに即した形でまとめてネイティブコードで処理、を突き詰めると
結局C++(not CLI)とC#でいいんだよなあ
596デフォルトの名無しさん
2012/10/31(水) 01:02:26.73 C++/CLIはビルドが遅いから糞
597デフォルトの名無しさん
2012/10/31(水) 04:22:13.18 必要に迫られて仕方なく使うもんですし
598デフォルトの名無しさん
2012/10/31(水) 20:11:20.60 マネージドからアンマネージドの処理を制御するのはいいんだけど
アンマネージドからマネージドに通知したい時どうしようか悩む
アンマネージドからマネージドに通知したい時どうしようか悩む
599デフォルトの名無しさん
2012/10/31(水) 21:21:47.37 gcrootで余裕
C#とDllImportだと参照管理がかなり面倒
C#とDllImportだと参照管理がかなり面倒
600デフォルトの名無しさん
2012/11/01(木) 07:39:47.26 C++/CXもここでいいの?
βでもあったし環境依存みたいだが、VS2012 for Windows8で
ターゲットwin32の時に出るコンパイルエラー対策を自分用にメモっとく
インクルードディレクトリに追加 ;$(WindowsSDK_IncludePath);
ライブラリディレクトリに追加 ;$(WindowsSDK_LibraryPath_X86);
βでもあったし環境依存みたいだが、VS2012 for Windows8で
ターゲットwin32の時に出るコンパイルエラー対策を自分用にメモっとく
インクルードディレクトリに追加 ;$(WindowsSDK_IncludePath);
ライブラリディレクトリに追加 ;$(WindowsSDK_LibraryPath_X86);
601デフォルトの名無しさん
2012/11/01(木) 09:24:06.16 >C++/CXもここでいいの?
全然別ものなので違います
全然別ものなので違います
602デフォルトの名無しさん
2012/11/01(木) 10:02:20.29 /CXも/CLIと同様に、GUI作るのに使おうとする勘違い君がたくさん出てくるんだろうな
このスレに溢れるC++/CLIに対するネガティブな意見はほとんど/CXにも当てはまる
このスレに溢れるC++/CLIに対するネガティブな意見はほとんど/CXにも当てはまる
603デフォルトの名無しさん
2012/11/01(木) 12:16:56.17 そう? ストア用アプリ開発をC++でやりたいって人に
思い留まらせるような要素は、C++/CXの環境には無いと思うけど
思い留まらせるような要素は、C++/CXの環境には無いと思うけど
604デフォルトの名無しさん
2012/11/01(木) 13:09:28.96 説明するだけ無駄な気はするけど、
WinMDのおかげでDllImportの手間が消えて、呼び出しコストが減って、C++製のネイティブコードを対象にしたリフレクションすら使えるようになった。
これだけ扱いやすくなってくれると高速化のために部分的に利用するってのも十分いける。
C++ AMPとか面白げな物もあるしね。
(C++やC#製のライブラリがJavaScriptからも簡単に呼び出せるので、UIをHTML5とJSで作る人が増えそう)
C++を使いこなせるならC#覚えるのは簡単。
C++が使えてもWinRT部分は全部0から覚えなおし
GUI作るのに何倍も時間がかかるわりには、同じライブラリ使っているため体感速度に差がない。
それならC#覚えて、重い処理のとこだけC++でやればいい。(HTML5+JSでもいいけど)
この辺の事情からC++/CXもC++/CLIと同様にGUIを作るためのものではないと断言する。
これだけ言われてもC++/CXだけでやりたいって言うなら止めないけど、どこまで行っても茨の道だぞ
WinMDのおかげでDllImportの手間が消えて、呼び出しコストが減って、C++製のネイティブコードを対象にしたリフレクションすら使えるようになった。
これだけ扱いやすくなってくれると高速化のために部分的に利用するってのも十分いける。
C++ AMPとか面白げな物もあるしね。
(C++やC#製のライブラリがJavaScriptからも簡単に呼び出せるので、UIをHTML5とJSで作る人が増えそう)
C++を使いこなせるならC#覚えるのは簡単。
C++が使えてもWinRT部分は全部0から覚えなおし
GUI作るのに何倍も時間がかかるわりには、同じライブラリ使っているため体感速度に差がない。
それならC#覚えて、重い処理のとこだけC++でやればいい。(HTML5+JSでもいいけど)
この辺の事情からC++/CXもC++/CLIと同様にGUIを作るためのものではないと断言する。
これだけ言われてもC++/CXだけでやりたいって言うなら止めないけど、どこまで行っても茨の道だぞ
605デフォルトの名無しさん
2012/11/01(木) 16:58:40.48 GUIはともかくDirectX使う場合はC++/CXになりそうだがXNAないし
606デフォルトの名無しさん
2012/11/01(木) 17:50:29.07 >>604
うーん、説明されても無駄だったなあ
C++/CXのデメリットの部分が抽象的でピンとこないや
WinMDちゅーても既存のネイティブライブラリをC#アプリにマージしようとしたら
結局ラッパークラス書かなきゃならないわけで
C++/CLI時代なら、ラッパークラスの作業量が多くなり過ぎるくらいなら
インターフェイスの粒度を洗いなおしてもうDllImportにしちまえよってことになるけど
C++/CXはそのまま全部に使うっ選択肢もありだとおもうけどね
うーん、説明されても無駄だったなあ
C++/CXのデメリットの部分が抽象的でピンとこないや
WinMDちゅーても既存のネイティブライブラリをC#アプリにマージしようとしたら
結局ラッパークラス書かなきゃならないわけで
C++/CLI時代なら、ラッパークラスの作業量が多くなり過ぎるくらいなら
インターフェイスの粒度を洗いなおしてもうDllImportにしちまえよってことになるけど
C++/CXはそのまま全部に使うっ選択肢もありだとおもうけどね
607デフォルトの名無しさん
2012/11/01(木) 18:03:13.80 >>605
DirectXはCX拡張使わずに普通のC++で使えるからC++/CX関係ない
設定画面などで少しだけOSネイティブのUIを使いたいときだけほんのちょっとCX使うくらいだろ
>>604
考え方が逆だと思う
これまでの.NETでは、C#からDllImportでC++を呼び出すのは簡単でもその逆は難しい
だからそこを補助するのにC++/CLIは有効
WinRTでは、C++からCXを使ってC#やWinJSで書かれたコンポーネントを呼び出す
ということが簡単に行えるから、既存のC++コードを他言語から
呼び出すためのラッパーなんて書かなくていいの
新規に作ったC#やJSのコンポーネントをC++から呼び出せばいい
DirectXはCX拡張使わずに普通のC++で使えるからC++/CX関係ない
設定画面などで少しだけOSネイティブのUIを使いたいときだけほんのちょっとCX使うくらいだろ
>>604
考え方が逆だと思う
これまでの.NETでは、C#からDllImportでC++を呼び出すのは簡単でもその逆は難しい
だからそこを補助するのにC++/CLIは有効
WinRTでは、C++からCXを使ってC#やWinJSで書かれたコンポーネントを呼び出す
ということが簡単に行えるから、既存のC++コードを他言語から
呼び出すためのラッパーなんて書かなくていいの
新規に作ったC#やJSのコンポーネントをC++から呼び出せばいい
608デフォルトの名無しさん
2012/11/01(木) 18:16:29.83 まぁ、どっちの使い方も出来るんだから好きなようにやりゃいいさ
609デフォルトの名無しさん
2012/11/01(木) 18:37:36.69 むしろC++/CXで呼び出せるデスクトップ用GUIライブラリが欲しかった…
C++/CLIはcli上にネイティブ用マーシャリングコードの生成だったけど
C++/CXはネイティブ上にCOM/WinRT用マーシャリングコードの生成なんんだよね確か
つまりObjCのパk(ry
C++/CLIはcli上にネイティブ用マーシャリングコードの生成だったけど
C++/CXはネイティブ上にCOM/WinRT用マーシャリングコードの生成なんんだよね確か
つまりObjCのパk(ry
610デフォルトの名無しさん
2012/11/01(木) 18:53:57.94 パコパコ
611デフォルトの名無しさん
2012/11/01(木) 21:43:12.40 問題はMSが途中で放り投げないのはどれかということだよ
612デフォルトの名無しさん
2012/11/01(木) 21:57:19.02 C++資産の活用という目的があるから/CLIも/CXも無くなることはないだろうけど
/CXも/CLIみたいにIDEサポートがなおざりになっていく可能性が高いな
/CLIも誕生当初は.NET開発の本命とか言われてたんだし
/CXも/CLIみたいにIDEサポートがなおざりになっていく可能性が高いな
/CLIも誕生当初は.NET開発の本命とか言われてたんだし
613デフォルトの名無しさん
2012/11/01(木) 22:01:57.86 全部放り投げて新たな言語開発したりしてw
614デフォルトの名無しさん
2012/11/01(木) 22:12:33.37 MSって実験的な技術でも最初から気合入れてしっかり使えるものを出してくるから厄介なんだよね
新技術出してすぐ放り投げるのはGoogleのほうがよっぽど酷いけど
あっちは一目見て「ああこれダメだわ」とわかるからな
新技術出してすぐ放り投げるのはGoogleのほうがよっぽど酷いけど
あっちは一目見て「ああこれダメだわ」とわかるからな
615デフォルトの名無しさん
2012/11/18(日) 18:32:24.63 hackとproductの文化的な違いでしょ
MSのは、OSSのフリーライダーに仕方なく合わせてきた感がタップリ
過去の因縁からしてMSの製品は使わないといった派閥は今日でも現存する
MSのは、OSSのフリーライダーに仕方なく合わせてきた感がタップリ
過去の因縁からしてMSの製品は使わないといった派閥は今日でも現存する
616デフォルトの名無しさん
2012/11/23(金) 09:55:41.06 共産主義の理想はOSSのみが実現できる
617デフォルトの名無しさん
2012/11/23(金) 09:57:46.75 OSSと共産主義が関連あるのは本当?FSFじゃなくて?
>>617
共産主義の定義による、スターリン以前か以後かどっち?
共産主義の定義による、スターリン以前か以後かどっち?
619デフォルトの名無しさん
2012/11/23(金) 18:05:53.27 C++で作られた.LIBなファイルをC++/CLIから呼び出すには何か注意点ありまか?
いま、ビルドはできるけどランタイムの初期化?で落ちてしまいます
いま、ビルドはできるけどランタイムの初期化?で落ちてしまいます
620デフォルトの名無しさん
2012/11/23(金) 23:14:32.20 visual studio でc++ やってるけど
#include "stdafx.h"
#include "stdio.h"
#using <System.Dll>
#using <System.Data.Dll>
#using <System.Xml.Dll>
#include <string>
using namespace System;
using namespace System::Data;
using namespace System::Xml;
using namespace System::Collections;
using namespace System::Data::SqlClient;
int main(void)
{
String^ str;
String^ str200;
char* comp[100] ;
SqlConnection^ Conn = gcnew SqlConnection("Password=apple;User ID=sa;Initial Catalog=master200;Data Source=.\\sql2031");
Conn->Open();
int t;
str = "Select * FROM Customers";
SqlCommand^ sqlCmd = gcnew SqlCommand(str,Conn);//
SqlDataReader^ dr= sqlCmd->ExecuteReader ();
while( dr->Read() )
{ str200=dr["CompanyName"]->ToString();
comp[t] = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str200).ToPointer();
こっから 表示ができない。
printf("<TD><input type='text' name='comp' size='30' value='"+comp[t]+"' ></TD>" );
#include "stdafx.h"
#include "stdio.h"
#using <System.Dll>
#using <System.Data.Dll>
#using <System.Xml.Dll>
#include <string>
using namespace System;
using namespace System::Data;
using namespace System::Xml;
using namespace System::Collections;
using namespace System::Data::SqlClient;
int main(void)
{
String^ str;
String^ str200;
char* comp[100] ;
SqlConnection^ Conn = gcnew SqlConnection("Password=apple;User ID=sa;Initial Catalog=master200;Data Source=.\\sql2031");
Conn->Open();
int t;
str = "Select * FROM Customers";
SqlCommand^ sqlCmd = gcnew SqlCommand(str,Conn);//
SqlDataReader^ dr= sqlCmd->ExecuteReader ();
while( dr->Read() )
{ str200=dr["CompanyName"]->ToString();
comp[t] = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str200).ToPointer();
こっから 表示ができない。
printf("<TD><input type='text' name='comp' size='30' value='"+comp[t]+"' ></TD>" );
621デフォルトの名無しさん
2012/11/23(金) 23:16:25.59 システム ストリング から苦労して
char* 変換できたけど
どうやってstringf できるか教えてほしい。
char* 変換できたけど
どうやってstringf できるか教えてほしい。
622デフォルトの名無しさん
2012/11/24(土) 09:22:28.68 あっさりできました。
printfやめたるだけだった。
Console::Write("<TD><input type='text' name='comp' size='30' style='background: #fafad2; font-weight: bold ;' value='"+dr["CompanyName"]+"' ></TD>" );
ストリング変換とかキャラ変換とか一切不要でした。
printfやめたるだけだった。
Console::Write("<TD><input type='text' name='comp' size='30' style='background: #fafad2; font-weight: bold ;' value='"+dr["CompanyName"]+"' ></TD>" );
ストリング変換とかキャラ変換とか一切不要でした。
623デフォルトの名無しさん
2012/11/24(土) 10:22:23.19 >>622
死ね
死ね
624デフォルトの名無しさん
2012/11/24(土) 11:28:11.23 >>623
なんでそういうこというんですか?
私はあなたが、ガソリンをかぶって、
火をつけて焼身自殺することを望みます。
2ちゃんねる ニュース板+で
焼身自殺した人のニュースみたら、凄い悲しみます。
でも後悔はしないです。
なんでそういうこというんですか?
私はあなたが、ガソリンをかぶって、
火をつけて焼身自殺することを望みます。
2ちゃんねる ニュース板+で
焼身自殺した人のニュースみたら、凄い悲しみます。
でも後悔はしないです。
625デフォルトの名無しさん
2012/11/24(土) 22:00:38.23 内閣府は24日、「外交に関する世論調査」結果を発表した。
中国に「親しみを感じない」と答えた人の割合は2011年の前回調査比9・2ポイント増の80・6%で、
1975年の調査開始以降で最高となった。
韓国に「親しみを感じない」という人も23・7ポイント増の59%と急増し、過去2番目に高い数字となった。
外務省は「尖閣諸島(沖縄県)や竹島(島根県)をめぐる対立が、中国や韓国に対する国民感情の悪化につながった」と分析している。
調査は9月27日〜10月7日にかけ、全国の成人男女3000人を対象に行い、1838人(61・3%)が回答した。
日中関係が「良好だと思わない」との回答は16・5ポイント増の92・8%、
日韓関係が「良好だと思わない」も42・8ポイント増の78・8%に達し、ともに過去最高となった。
中国との関係では、今年9月の尖閣諸島国有化をきっかけに中国各地で反日デモが相次ぎ、
現地の日系企業が焼き打ちや略奪に遭ったことなどが影響したとみられる。
「韓流ブーム」などを通じ近年は良好だった韓国との関係についても、
今年8月の韓国の李明博(イミョンバク)大統領による竹島上陸が「冷や水」を浴びせた格好だ。
http://www.yomiuri.co.jp/national/news/20121124-OYT1T00811.htm?from=ylist
中国に「親しみを感じない」と答えた人の割合は2011年の前回調査比9・2ポイント増の80・6%で、
1975年の調査開始以降で最高となった。
韓国に「親しみを感じない」という人も23・7ポイント増の59%と急増し、過去2番目に高い数字となった。
外務省は「尖閣諸島(沖縄県)や竹島(島根県)をめぐる対立が、中国や韓国に対する国民感情の悪化につながった」と分析している。
調査は9月27日〜10月7日にかけ、全国の成人男女3000人を対象に行い、1838人(61・3%)が回答した。
日中関係が「良好だと思わない」との回答は16・5ポイント増の92・8%、
日韓関係が「良好だと思わない」も42・8ポイント増の78・8%に達し、ともに過去最高となった。
中国との関係では、今年9月の尖閣諸島国有化をきっかけに中国各地で反日デモが相次ぎ、
現地の日系企業が焼き打ちや略奪に遭ったことなどが影響したとみられる。
「韓流ブーム」などを通じ近年は良好だった韓国との関係についても、
今年8月の韓国の李明博(イミョンバク)大統領による竹島上陸が「冷や水」を浴びせた格好だ。
http://www.yomiuri.co.jp/national/news/20121124-OYT1T00811.htm?from=ylist
626デフォルトの名無しさん
2012/11/25(日) 15:24:56.72 C++/CLIのクラスライブラリのプロジェクトが2つ(AとB)あります。
BはAを使うので、Bのプロジェクトの設定でAを参照するようにしています。
Aのビルドは問題なくできますが、Bをビルドすると
LNK2020: 未解決のトークン (06000022) <Aにあるクラスの静的メソッド名>
と言われます。
何か他に設定が必要でしょうか。教えてください。
BはAを使うので、Bのプロジェクトの設定でAを参照するようにしています。
Aのビルドは問題なくできますが、Bをビルドすると
LNK2020: 未解決のトークン (06000022) <Aにあるクラスの静的メソッド名>
と言われます。
何か他に設定が必要でしょうか。教えてください。
627デフォルトの名無しさん
2012/11/25(日) 15:46:03.82 http://msdn.microsoft.com/ja-jp/library/b57tw91b(v=vs.80).aspx
このエラーを解決するには、次のどちらかの操作を実行します。
欠けている関数またはデータを定義します。
欠けている関数またはデータが既に定義されているオブジェクト ファイルあるいはライブラリを取り込みます。
このエラーを解決するには、次のどちらかの操作を実行します。
欠けている関数またはデータを定義します。
欠けている関数またはデータが既に定義されているオブジェクト ファイルあるいはライブラリを取り込みます。
628デフォルトの名無しさん
2012/11/26(月) 22:01:25.29 C++でのオブザーバーパターンの実装例を教えていただけますでしょうか
色々検索したのですが見つかりませんでした
色々検索したのですが見つかりませんでした
629デフォルトの名無しさん
2012/11/26(月) 22:05:15.44 C++/CLIならそんなもん要らん。言語に組み込まれている。
イベントを使え。
イベントを使え。
630デフォルトの名無しさん
2012/11/26(月) 22:10:44.54 オブザーバーパターンの実装が分からんとか
さすがにC++/CLIを使う資格がないと言わざるを得ない
C#かC++からやれ
さすがにC++/CLIを使う資格がないと言わざるを得ない
C#かC++からやれ
631デフォルトの名無しさん
2012/11/26(月) 22:35:48.50 obsecureですね
わかります
わかります
632デフォルトの名無しさん
2012/11/28(水) 21:17:29.45 C++/CLIみたいな方言をやる意味あるのか?
633デフォルトの名無しさん
2012/11/28(水) 22:48:53.31 しがらみってもんがあってな
634デフォルトの名無しさん
2012/11/28(水) 23:56:16.87 2012で..netのウィンドウがある普通のアプリが
作れなくなったのだったか?
作れなくなったのだったか?
635デフォルトの名無しさん
2012/11/28(水) 23:58:00.13 プロジェクトテンプレートが無くなっただけで、WinFormsの項目テンプレートはある
MSとしてはフェードアウトさせたいんだろうな
MSとしてはフェードアウトさせたいんだろうな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- ナルトっておもしろいの?海外の人みんなナルトナルトいってるけど
- 👊😅👊三☁😶‍🌫三⛅🏡
- コーヒー、来年3月から30パーセント値上げへ [709039863]
- VTuberの年間スーパーチャットランキング1位はホロでもにじでもなく、個人勢 [582488683]
