おそらく、.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
678デフォルトの名無しさん
2013/06/02(日) 21:35:27.92 ReleaseComObjectは現実的な対処法ではないだろう。
ある程度の規模のコードで、例外時も含めて漏れなく書くとなると
コード量が膨らみすぎる。
ある程度の規模のコードで、例外時も含めて漏れなく書くとなると
コード量が膨らみすぎる。
679デフォルトの名無しさん
2013/06/17(月) 19:39:26.55 .Net Framework 2.0のUdpClientクラスって、recvfromに該当するものってないのかな?
相手のIPアドレスが知りたいんだけども。
同じポートに複数のスレッドがブロードキャストしてて、片側のパケットだけを対象にしたい
のよね。
相手のIPアドレスが知りたいんだけども。
同じポートに複数のスレッドがブロードキャストしてて、片側のパケットだけを対象にしたい
のよね。
680デフォルトの名無しさん
2013/06/17(月) 22:44:18.60 Connectすればいいよ
681679
2013/06/18(火) 12:48:05.81 自己解決した。
ひとまず、EndRecieveの引数にIPEndPoint仕掛けてやればいいっぽ。
そしたらStringで判定できる。
ひとまず、EndRecieveの引数にIPEndPoint仕掛けてやればいいっぽ。
そしたらStringで判定できる。
682デフォルトの名無しさん
2013/06/18(火) 13:06:09.51 >>679
recvfrom の仕様は分からないけど、送信元のアドレスは UdpClient.Receive
の引数で取れるよ。
非同期なら UdpClient.EndReceive の第2引数。
見当違いだったらごめん。
recvfrom の仕様は分からないけど、送信元のアドレスは UdpClient.Receive
の引数で取れるよ。
非同期なら UdpClient.EndReceive の第2引数。
見当違いだったらごめん。
683682
2013/06/18(火) 13:07:11.20 リロード忘れたorz
685デフォルトの名無しさん
2013/06/18(火) 15:44:15.55 リロード忘れたの意味がわからない人か
686デフォルトの名無しさん
2013/06/18(火) 16:31:15.38 わかってるから優しくフォローしたように見えるけど。
世の中難しいね!
世の中難しいね!
687デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN 配列初期化時に値も設定したのですが、gcnew array<int>(3){1,2,3};
って書かないとコンパイラさんにはじかれます。
gcnew array<int>(){1,2,3};
みたいな、配列サイズを指定しない初期化方法は無いでしょうか。
って書かないとコンパイラさんにはじかれます。
gcnew array<int>(){1,2,3};
みたいな、配列サイズを指定しない初期化方法は無いでしょうか。
688デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN ()書かない
689デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN 本当だ!!<>のあとに{}を書くっていう発想がなかったです。
ありがとうございました。
ありがとうございました。
690デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN C++/CLIで使えるロギングライブラリってどういうのがあるんでしょう?
.netで用意されているのか、あるいはlog4cppなんかのC++用の
ライブラリを使ったりしているんでしょうか。
.netで用意されているのか、あるいはlog4cppなんかのC++用の
ライブラリを使ったりしているんでしょうか。
691デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN log4netとか
692デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN なるほど、見落としていました。
log4netは名前を見たことはあったんですが、「C#で使うもの」と
刷り込まれて、すっかり頭から抜けていました。
log4netは名前を見たことはあったんですが、「C#で使うもの」と
刷り込まれて、すっかり頭から抜けていました。
693デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN listBox1->Items->Add("A");
これがOKで
std::string a = "A";
listBox1->Items->Add(a.c_str());
これだと'const char *' から 'System::Object ^' に変換できないって出るんだけどどういうこと?
最近CLIさわりはじめたんだけどわからん・・・
これがOKで
std::string a = "A";
listBox1->Items->Add(a.c_str());
これだと'const char *' から 'System::Object ^' に変換できないって出るんだけどどういうこと?
最近CLIさわりはじめたんだけどわからん・・・
694デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN リテラルの文字列は文脈によってString^として扱えるってだけ
char*やwchar_t*とString^は別物
char*からならgcnew Stringしたりとか
char*やwchar_t*とString^は別物
char*からならgcnew Stringしたりとか
695デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN >>694
とんくす
とんくす
696デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN697デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN コードっす(1/2)。"192.168.3.128"からのUDPブロードキャストのみを対象にしたいっす。
--------
#pragma endregion
private:
System::Void btnUdpRecv_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ FilterIPAddress = L"255.255.255.255";
// Receive a message and write it to the console.
int portID = 3000;
IPEndPoint^ ipep = gcnew IPEndPoint(IPAddress::Any, portID);
UdpClient^ udpcli = gcnew UdpClient(ipep);
UdpState^ udpst = gcnew UdpState();
udpst->e = ipep;
udpst->u = udpcli;
udpst->u->Connect(FilterIPAddress, portID);
this->btnUdpRecv->Enabled = false;
Console::WriteLine("listening to RT");
udpcli->BeginReceive(gcnew AsyncCallback(this, &UDP_RECVTEST::Form1::ReceiveCallback), udpst);
// Do some work while we wait for a Packet. For this example,
// we'll just sleep
while (!messageReceived)
{
System::Threading::Thread::Sleep(100);
}
this->btnUdpRecv->Enabled = true;
}
--------
#pragma endregion
private:
System::Void btnUdpRecv_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ FilterIPAddress = L"255.255.255.255";
// Receive a message and write it to the console.
int portID = 3000;
IPEndPoint^ ipep = gcnew IPEndPoint(IPAddress::Any, portID);
UdpClient^ udpcli = gcnew UdpClient(ipep);
UdpState^ udpst = gcnew UdpState();
udpst->e = ipep;
udpst->u = udpcli;
udpst->u->Connect(FilterIPAddress, portID);
this->btnUdpRecv->Enabled = false;
Console::WriteLine("listening to RT");
udpcli->BeginReceive(gcnew AsyncCallback(this, &UDP_RECVTEST::Form1::ReceiveCallback), udpst);
// Do some work while we wait for a Packet. For this example,
// we'll just sleep
while (!messageReceived)
{
System::Threading::Thread::Sleep(100);
}
this->btnUdpRecv->Enabled = true;
}
698デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN 続きっす(2/2)。
--------
//Call back function for the read packet data
System::Void UDP_RECVTEST::Form1::ReceiveCallback(IAsyncResult^ ar)
{
String^ FilterIPAddress = "192.168.3.128";
UdpState^ state = (UdpState^)ar->AsyncState;
UdpClient^ udpcli = state->u;
IPEndPoint^ ipep = state->e;
EndPoint^ remoteep = udpcli->Client->RemoteEndPoint;
int len = udpcli->Client->EndReceive(ar);
String^ recvip = ipep->Address->Broadcast->ToString();
if(ipep->Address->Broadcast->ToString() == FilterIPAddress)
{
array<unsigned char>^ receiveBytes = udpcli->EndReceive(ar, ipep); //Packet received
Console::WriteLine("Received packet length {0}", receiveBytes->Length);
messageReceived = true;
return;
}
Console::WriteLine("listening to RT");
udpcli->BeginReceive(gcnew AsyncCallback(this, &UDP_RECVTEST::Form1::ReceiveCallback), state);
}
--------
//Call back function for the read packet data
System::Void UDP_RECVTEST::Form1::ReceiveCallback(IAsyncResult^ ar)
{
String^ FilterIPAddress = "192.168.3.128";
UdpState^ state = (UdpState^)ar->AsyncState;
UdpClient^ udpcli = state->u;
IPEndPoint^ ipep = state->e;
EndPoint^ remoteep = udpcli->Client->RemoteEndPoint;
int len = udpcli->Client->EndReceive(ar);
String^ recvip = ipep->Address->Broadcast->ToString();
if(ipep->Address->Broadcast->ToString() == FilterIPAddress)
{
array<unsigned char>^ receiveBytes = udpcli->EndReceive(ar, ipep); //Packet received
Console::WriteLine("Received packet length {0}", receiveBytes->Length);
messageReceived = true;
return;
}
Console::WriteLine("listening to RT");
udpcli->BeginReceive(gcnew AsyncCallback(this, &UDP_RECVTEST::Form1::ReceiveCallback), state);
}
699デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN 以下、簡単に説明。
プロジェクトはWindowsフォームアプリケーションです。フォームにボタンを配置して
クリックしたら"btnUdpRecv_Click"がうごくという簡単なもの。
あと、UDPブロードキャスト送信側は、inet_addr("255.255.255.255")で送信しております
です。
なにかヒントでもありましたらご教示くださいませ。
プロジェクトはWindowsフォームアプリケーションです。フォームにボタンを配置して
クリックしたら"btnUdpRecv_Click"がうごくという簡単なもの。
あと、UDPブロードキャスト送信側は、inet_addr("255.255.255.255")で送信しております
です。
なにかヒントでもありましたらご教示くださいませ。
700デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN EndReceiveの第二引数かいてないのはいろいろ試してそれでもだめだったんで
一回もと(というか、チャレンジする前)に戻したためです。ご了承くだ。
一回もと(というか、チャレンジする前)に戻したためです。ご了承くだ。
701デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN なんでEndReceive二回よんでんの?
702デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN そう!すいませんアホなことしてましたアンド紛らわしい変数名つけてたんで違うほうみてた…
お騒がせしますた!
お騒がせしますた!
703デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN スレッドを立てたいんだけど、
HANDLE ThreadHandle = (HANDLE)_beginthreadex(NULL, 0, ReadThread, NULL, 0, NULL);
unsigned __stdcall ReadThread(void *p){}
こうすると関数呼び出しには引数リストが無いからメンバーへのポインタを作成するために
&Namespace::ReadThreadって感じで指定しろって言われたからそうしたら今度は
delegate インスタンスを作成する場合以外に&Namespace::ReadThreadのアドレスを指定できないとか言われて八方塞なんだけどどうしたらええの・・・
HANDLE ThreadHandle = (HANDLE)_beginthreadex(NULL, 0, ReadThread, NULL, 0, NULL);
unsigned __stdcall ReadThread(void *p){}
こうすると関数呼び出しには引数リストが無いからメンバーへのポインタを作成するために
&Namespace::ReadThreadって感じで指定しろって言われたからそうしたら今度は
delegate インスタンスを作成する場合以外に&Namespace::ReadThreadのアドレスを指定できないとか言われて八方塞なんだけどどうしたらええの・・・
704デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN いっそ、CreateThread
_biginthread ってなんで必要なんだ?
CreateThread で十分用がたりるのだが?
というか cygwin/gcc-3 なんでこれしか選択肢がない
CreateThread で十分用がたりるのだが?
というか cygwin/gcc-3 なんでこれしか選択肢がない
706デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN _beginthreadも結局は内部でCreateThreadを呼び出しているのではあるが
そのほかにランタイムが使う内部変数の初期化なども行っている
よっていきなりCreateThreadを呼び出すと
出所不明のメモリリークに悩まされたりすることになる
逆に言えばMSVCRTを使わないのであればCreateThreadをつかえば良い
そのほかにランタイムが使う内部変数の初期化なども行っている
よっていきなりCreateThreadを呼び出すと
出所不明のメモリリークに悩まされたりすることになる
逆に言えばMSVCRTを使わないのであればCreateThreadをつかえば良い
707デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN テンプレ類は覚えること少なくする目的で簡単にしようという理念からはじまり、
いろいろ隠ぺいすることで逆にめんどくさいものになってるよね
いろいろ隠ぺいすることで逆にめんどくさいものになってるよね
708デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN >>703
warning C4441無視してね?
warning C4441無視してね?
709デフォルトの名無しさん
2013/07/26(金) NY:AN:NY.AN Managed Threadは使わんの?.NETなんだし
710デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN array<String^>^ txts = gcnew array<String^>{"りんご", "ごりら", "らっぱ"};
int index = 0;
String^ msg = txts[index ++] + txts[index ++] + txts[index ++];
とやった時にmsg = "りんごりんごりんご"になるのですが
msg = "りんごごりららっぱ"となるようなインクリメントの方法はないでしょうか
int index = 0;
String^ msg = txts[index ++] + txts[index ++] + txts[index ++];
とやった時にmsg = "りんごりんごりんご"になるのですが
msg = "りんごごりららっぱ"となるようなインクリメントの方法はないでしょうか
711デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN 3行にわければ?
sehermitage.web.fc2.com/program/c_lang.html
> インクリメント演算子++とデクリメント演算子--は,変数の値を変化させるが,
> その変数が同じ式の中で再び参照された場合,動作は未定義となり値は保証されない
sehermitage.web.fc2.com/program/c_lang.html
> インクリメント演算子++とデクリメント演算子--は,変数の値を変化させるが,
> その変数が同じ式の中で再び参照された場合,動作は未定義となり値は保証されない
712デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN >>711
情報どうもです!式を分けるしかないですね。
情報どうもです!式を分けるしかないですね。
713デフォルトの名無しさん
2013/08/11(日) NY:AN:NY.AN 32bitのネイティブのDLLを呼び出す.netのDLLがあります。
それを呼び出す.netのアプリの設定で、共通言語ランタイムサポートを/clr:safeでコンパイルすると、64bitOSで動かなくります。
共通言語ランタイムサポートを/clrにすると動きます。/clr:safeのままで動かすにはどうしたら良いでしょう。
それを呼び出す.netのアプリの設定で、共通言語ランタイムサポートを/clr:safeでコンパイルすると、64bitOSで動かなくります。
共通言語ランタイムサポートを/clrにすると動きます。/clr:safeのままで動かすにはどうしたら良いでしょう。
714デフォルトの名無しさん
2013/08/11(日) NY:AN:NY.AN >>713
safeだとanycpu指定で作ったアセンブリとなるので、
64bitのWindowsだと64bitモードで動作する
手元にあるVS2010では適当なコンパイルオプションが見つからないので、
CorFlagsで32bitフラグをONにするとかかな
safeだとanycpu指定で作ったアセンブリとなるので、
64bitのWindowsだと64bitモードで動作する
手元にあるVS2010では適当なコンパイルオプションが見つからないので、
CorFlagsで32bitフラグをONにするとかかな
716デフォルトの名無しさん
2013/09/08(日) 19:50:17.03 MFCアプリを移行しようと/clrでビルドしたところ、LNK4248が大量に発生しました。
原因は使用しているdllで使う構造体の定義本体がなく事前宣言しかないための
ようですが、これは無視しても問題ないものでしょうか?
当然、この構造体のメンバにアクセスすることはなく、これまでは問題ありませんでした。
また、この警告の出力を抑制する方法はないでしょうか?環境はVS2008です。
原因は使用しているdllで使う構造体の定義本体がなく事前宣言しかないための
ようですが、これは無視しても問題ないものでしょうか?
当然、この構造体のメンバにアクセスすることはなく、これまでは問題ありませんでした。
また、この警告の出力を抑制する方法はないでしょうか?環境はVS2008です。
717デフォルトの名無しさん
2013/09/09(月) 01:05:58.58 数が少ないなら
struct nantoka { };
みたいなのを定義するとか。
あるいは大量にあって全部無視して安全だと分かっているなら link.exe にオプション /ignore:4248 をつけるとか。
(こっちは試したことないので動くかどうかはしらん)
struct nantoka { };
みたいなのを定義するとか。
あるいは大量にあって全部無視して安全だと分かっているなら link.exe にオプション /ignore:4248 をつけるとか。
(こっちは試したことないので動くかどうかはしらん)
718デフォルトの名無しさん
2013/09/10(火) 01:04:26.29 前者の方法でうまくいきました。ありがとうございました。
719デフォルトの名無しさん
2013/09/11(水) 18:19:50.17 PropertyGridで説明つけるとき
C#は、
[Description("説明領域に書き込めます。")]
VBは、
<Description("説明領域に書き込めます。")> _
とあるのですが
CLIではどのように記述すればよろしいのでしょうか?
C#は、
[Description("説明領域に書き込めます。")]
VBは、
<Description("説明領域に書き込めます。")> _
とあるのですが
CLIではどのように記述すればよろしいのでしょうか?
720デフォルトの名無しさん
2013/09/11(水) 18:22:25.98 そんなのはMSDN見ろよ
C++/CLIは今はまだサンプル表示できる言語に残ってるぜ
C++/CLIは今はまだサンプル表示できる言語に残ってるぜ
721デフォルトの名無しさん
2013/09/11(水) 18:34:21.21 サンプル見てもCLIのPropertyGridのDescription見つからなかったのです。
で、解決しました。
Formと同じusing namespace書いたら
C#と同じ書式でいけました。
で、解決しました。
Formと同じusing namespace書いたら
C#と同じ書式でいけました。
722デフォルトの名無しさん
2013/09/11(水) 18:35:33.94 ComponentModelにおった
723デフォルトの名無しさん
2013/09/23(月) 12:57:32.04 ドッキングウインドウとかできますか?
724デフォルトの名無しさん
2013/09/27(金) 21:09:38.57 MDIとか、できない?
725デフォルトの名無しさん
2013/09/29(日) 00:32:42.55 bulletを使いたいのですが
整列データ型はサポートされてないって言われ
通りません。
BT_MANAGED_CODE定義以外何か必要なのでしょうか?
教えてください
整列データ型はサポートされてないって言われ
通りません。
BT_MANAGED_CODE定義以外何か必要なのでしょうか?
教えてください
726デフォルトの名無しさん
2013/09/29(日) 16:15:50.71 Imageクラスって各イメージファイル形式のフォーマット知らんでも勝手に保管してくれるんだっけ?
たとえば jpeg の 0xFFD9とか
たとえば jpeg の 0xFFD9とか
727デフォルトの名無しさん
2013/09/29(日) 16:21:06.24 ちょっと言ってる意味が分からない
728デフォルトの名無しさん
2013/09/29(日) 17:39:33.10 あー、ごめん。
例えばBITMAP形式のファイルを読み込んでSaveメソッドでjpeg指定するだけで変換できるのかと。
例えばBITMAP形式のファイルを読み込んでSaveメソッドでjpeg指定するだけで変換できるのかと。
729デフォルトの名無しさん
2013/09/29(日) 17:41:13.27 というか、まぁ出来たは出来たんだけどね。
ただ、.Netのバージョンによって挙動が変わるっぽいね。
0xFFFEの部分が無視されちゃったりされなかったり。
ただ、.Netのバージョンによって挙動が変わるっぽいね。
0xFFFEの部分が無視されちゃったりされなかったり。
730デフォルトの名無しさん
2013/10/02(水) 18:23:28.32 visual studio 2012は、新しい項目の追加で継承されたフォームが
出てこないんですか?
継承されたフォームを作成するにはどうすればいいのか教えてください。
出てこないんですか?
継承されたフォームを作成するにはどうすればいいのか教えてください。
731デフォルトの名無しさん
2013/10/12(土) 15:02:58.87 for(int i=0;i<Hoge->Split(array<String^>{L"\r\n"},StringSplitOptions::None)->Length;i++){
...
}
と
array<String^ >^Hoge_Split = Hoge->Split(array<String^>{L"\r\n"},StringSplitOptions::None);
for(int i=0;i<Hoge_Split->Length;i++){
...
}
と
int i=0;
for each(String^ Hoge_Line in Hoge->Split(array<String^>{L"\r\n"},StringSplitOptions::None)){
...
i++;
}
のどれが処理が速いの?
「...」の部分が十分に長く要素の番号を参照することがあるとして
...
}
と
array<String^ >^Hoge_Split = Hoge->Split(array<String^>{L"\r\n"},StringSplitOptions::None);
for(int i=0;i<Hoge_Split->Length;i++){
...
}
と
int i=0;
for each(String^ Hoge_Line in Hoge->Split(array<String^>{L"\r\n"},StringSplitOptions::None)){
...
i++;
}
のどれが処理が速いの?
「...」の部分が十分に長く要素の番号を参照することがあるとして
732デフォルトの名無しさん
2013/10/12(土) 16:26:14.92 試せよ
733デフォルトの名無しさん
2013/10/12(土) 16:53:11.84 フォームアプリケーションでの質問だけど、
テキストボックス(名前:textBox1とする)を配置すると、
textBox1->Text
でString型の文字列がとれるんだけど、これをatoiしたいがためにchar型に変換しようとして、
atoi(textBox1->Text->c_str());
って書くと、「c_strはSystem::Stringのメンバではありません」って表示される。
c_strってメンバじゃないの?
テキストボックス(名前:textBox1とする)を配置すると、
textBox1->Text
でString型の文字列がとれるんだけど、これをatoiしたいがためにchar型に変換しようとして、
atoi(textBox1->Text->c_str());
って書くと、「c_strはSystem::Stringのメンバではありません」って表示される。
c_strってメンバじゃないの?
734デフォルトの名無しさん
2013/10/12(土) 17:06:19.97 じゃないよ
System::Stringとstd::stringは別物
System::Stringとstd::stringは別物
735デフォルトの名無しさん
2013/10/12(土) 17:12:51.52 VBじゃねえんだから大文字小文字の区別はつけよう
736デフォルトの名無しさん
2013/10/12(土) 17:26:01.80 うおおまじか
紛らわしいな…ありがとう
紛らわしいな…ありがとう
737デフォルトの名無しさん
2013/10/12(土) 23:00:26.48 C++/CLIでWPFをやろうとしていますが、XamlReader::Load()で自作クラスのインスタンス化に失敗します。
フレームワークに含まれるSystem.Windows.Applicationなら<Application>でのインスタンス化に成功するが、
その派生クラスMyApp.Appをインスタンス化しようとして<Application x:Class="MyApp.App" >としても、
クラス名を間違えたときと同じように下のような例外が出てしまいます。。
指定されたクラス名 'MyApp.App' は、実際のルート インスタンス型 'System.Windows.Application' と一致しません。
クラスを見つけられていないんだと思いますが、これはどこかで設定する必要があるんでしょうか?
プロジェクトの設定は「空のCLRプロジェクト」のサブシステムをWINDOWSにして、WPFに必要な
PresentationCore.dllなどの参照を追加した程度です。
フレームワークに含まれるSystem.Windows.Applicationなら<Application>でのインスタンス化に成功するが、
その派生クラスMyApp.Appをインスタンス化しようとして<Application x:Class="MyApp.App" >としても、
クラス名を間違えたときと同じように下のような例外が出てしまいます。。
指定されたクラス名 'MyApp.App' は、実際のルート インスタンス型 'System.Windows.Application' と一致しません。
クラスを見つけられていないんだと思いますが、これはどこかで設定する必要があるんでしょうか?
プロジェクトの設定は「空のCLRプロジェクト」のサブシステムをWINDOWSにして、WPFに必要な
PresentationCore.dllなどの参照を追加した程度です。
738デフォルトの名無しさん
2013/10/12(土) 23:10:16.98 Applicationを継承しろ
っていうか素直にC#を併用しろ時間の無駄だ
っていうか素直にC#を併用しろ時間の無駄だ
739デフォルトの名無しさん
2013/10/12(土) 23:18:26.35 C#でデザイナ使ったときはXamlってコンパイル時に処理されるからなあ
clr-namespaceとか指定してみたら
clr-namespaceとか指定してみたら
740デフォルトの名無しさん
2013/10/13(日) 00:20:33.93 <my:App x:Class="MyApp.App" xmlns:my="clr-namespace:MyApp">としてみると
不明な型 '{clr-namespace:MyApp}App' を作成できません。
というエラーになりますね。やっぱり何か認識できていないのかな。
不明な型 '{clr-namespace:MyApp}App' を作成できません。
というエラーになりますね。やっぱり何か認識できていないのかな。
741デフォルトの名無しさん
2013/10/13(日) 00:25:09.93 ApplicationのXAMLいらなくね?
普通にコードからgcnew AppしてRunしてMainWIndowすればいいじゃん
アプリケーションリソース使うならリソースディクショナリをLoadXamlすればいいし
デザイナがないのにわざわざデザイナ向けの面倒な方法をとる意味がわからん
普通にコードからgcnew AppしてRunしてMainWIndowすればいいじゃん
アプリケーションリソース使うならリソースディクショナリをLoadXamlすればいいし
デザイナがないのにわざわざデザイナ向けの面倒な方法をとる意味がわからん
742デフォルトの名無しさん
2013/10/13(日) 00:51:09.66 App.xamlに限れば省略する手もあるでしょうが、現象としてはMainWindow.xamlも同じなので。
クラスをインスタンス化するという意味においてはApp.xamlもMainWindow.xamlも違いは
ありませんので、例としてApp.xamlを挙げたに過ぎません。
クラスをインスタンス化するという意味においてはApp.xamlもMainWindow.xamlも違いは
ありませんので、例としてApp.xamlを挙げたに過ぎません。
743デフォルトの名無しさん
2013/10/13(日) 08:31:38.34744デフォルトの名無しさん
2013/10/13(日) 08:32:40.33 ちとタイプミスったが許せ
745デフォルトの名無しさん
2013/11/10(日) 04:03:56.73 C#のfixedとC++/CLIのpin_ptrって同じものですか?
C#で配列をfixedして処理するより,C++/CLIにマネージ配列で渡した後,C++/CLI内でpin_ptrして処理する方が速いのでしょうか?
初歩的な質問で申し訳ないです.
C#で配列をfixedして処理するより,C++/CLIにマネージ配列で渡した後,C++/CLI内でpin_ptrして処理する方が速いのでしょうか?
初歩的な質問で申し訳ないです.
746デフォルトの名無しさん
2013/11/10(日) 07:13:51.28 ネイティブコードに渡さないときはinterior_ptrで書くんじゃない。
パフォーマンスは大差ないかと…。
パフォーマンスは大差ないかと…。
747デフォルトの名無しさん
2013/11/10(日) 07:53:22.46 そもそも普通にマネージコードで処理するんならC#で普通にインデックス使って回せば最適化されるから十分速い
ヘタにポインタ使った方が遅くなることもある
ヘタにポインタ使った方が遅くなることもある
748デフォルトの名無しさん
2013/11/10(日) 12:45:13.44 パフォーマンス的には対して変わらない,下手な書き方をすればかえって遅くなるということでしょうか?
やりたかったのは,C#からBitmapとint配列を渡して,C++/CLI内でヒストグラムを作るとかそんなところです.
C#側からは,
MakeBrightnessHistogram(Bitmap^ bmp, array<int>^ histogram)
を呼び出して,この関数の内部でFormat32bppRgbのBitmapDataを取得し,histogramをpin_ptrで固定した後,
MakeBrightnessHistogram_Unmanaged(int* data, int size, int* p_histogram)
を呼び出すというような形になっています.(dataはBitmapData->Scan0をint*にキャストしたもの,sizeはbmpの画素数)
ちなみに,MakeBrightnessHistogram_Unmanaged内で,RGBの値をBrightnessに変換する変換テーブル(ネイティブ配列)にアクセスしています.
画像データやヒストグラム,変換テーブルといった配列にアクセスする命令が多いので,C++/CLIを使えば速くなるのかと思ってプログラムしてみたのですが,
こういった処理は,わざわざC++/CLIを使わなくても,C#で高速にできるものなのでしょうか?
最初から素直にこれを質問すれば良かったですね...
やりたかったのは,C#からBitmapとint配列を渡して,C++/CLI内でヒストグラムを作るとかそんなところです.
C#側からは,
MakeBrightnessHistogram(Bitmap^ bmp, array<int>^ histogram)
を呼び出して,この関数の内部でFormat32bppRgbのBitmapDataを取得し,histogramをpin_ptrで固定した後,
MakeBrightnessHistogram_Unmanaged(int* data, int size, int* p_histogram)
を呼び出すというような形になっています.(dataはBitmapData->Scan0をint*にキャストしたもの,sizeはbmpの画素数)
ちなみに,MakeBrightnessHistogram_Unmanaged内で,RGBの値をBrightnessに変換する変換テーブル(ネイティブ配列)にアクセスしています.
画像データやヒストグラム,変換テーブルといった配列にアクセスする命令が多いので,C++/CLIを使えば速くなるのかと思ってプログラムしてみたのですが,
こういった処理は,わざわざC++/CLIを使わなくても,C#で高速にできるものなのでしょうか?
最初から素直にこれを質問すれば良かったですね...
749デフォルトの名無しさん
2013/11/10(日) 13:40:47.67 そういうコード書くならCかC++でDLL作って
それを呼び出すようにした方が手っ取り早い気がするのよ
それを呼び出すようにした方が手っ取り早い気がするのよ
750デフォルトの名無しさん
2013/11/10(日) 13:53:11.58 C#で書いて問題になるほど遅かったら移植すればいいでしょ
実際そんなに変わらないけどな
パフォーマンスの心配は9割無駄だからくだらないこと気にしてないでまずは動かせ
先入観でパフォーマンスを考えるほど無意味なことはない
実際そんなに変わらないけどな
パフォーマンスの心配は9割無駄だからくだらないこと気にしてないでまずは動かせ
先入観でパフォーマンスを考えるほど無意味なことはない
751デフォルトの名無しさん
2013/11/10(日) 14:12:32.92 とりあえずC#で書いてみて,処理速度がDLLを呼び出す方法と対して変わらないようであれば,
DLL使わずにC#だけで書くようにしたいと思います.
ありがとうございました.
DLL使わずにC#だけで書くようにしたいと思います.
ありがとうございました.
752デフォルトの名無しさん
2013/11/10(日) 19:45:52.63 >>748
lockbits()を使うだけでも相当速くなるぞ
BitMapキャンバスへの描画メソッドは物凄く遅い
http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleBitmapPlus.html
http://tinqwill.blog59.fc2.com/blog-entry-46.html
ここら辺とか
lockbits()を使うだけでも相当速くなるぞ
BitMapキャンバスへの描画メソッドは物凄く遅い
http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleBitmapPlus.html
http://tinqwill.blog59.fc2.com/blog-entry-46.html
ここら辺とか
753デフォルトの名無しさん
2013/11/10(日) 23:31:16.11 BitmapDataと言ってるからLockBitsは使ってるんでしょ
754デフォルトの名無しさん
2013/11/11(月) 09:48:07.24 >748
アルゴリズムをunmanagedで書くなら、たしかにSSE2 intrinsicとか使えば圧倒的なスピードが出る。
でも、それならP/Invokeでいいのでは感がある。
アルゴリズムをunmanagedで書くなら、たしかにSSE2 intrinsicとか使えば圧倒的なスピードが出る。
でも、それならP/Invokeでいいのでは感がある。
755デフォルトの名無しさん
2013/11/11(月) 22:42:22.66 環境に合わせて最適なコード吐くんだろ?違うのか?
756デフォルトの名無しさん
2013/11/18(月) 13:42:22.83 byte[,] bmp = new byte[640,480];
とかやってたりしてw
とかやってたりしてw
757デフォルトの名無しさん
2013/11/19(火) 13:06:00.35758デフォルトの名無しさん
2013/11/21(木) 11:24:38.95759デフォルトの名無しさん
2013/11/21(木) 22:16:01.02 だからポインタでアクセスできると言ってるでしょ
ポインタ使えば多次元配列でも1次元配列をforループで回して最適化が効いた時と同程度には速くなるよ
ポインタ使えば多次元配列でも1次元配列をforループで回して最適化が効いた時と同程度には速くなるよ
760デフォルトの名無しさん
2013/11/21(木) 23:39:11.69 あれ?遅いのはジャグ配列じゃなかったか?
最近別言語の案件やってるんで忘れてしまったわ
最近別言語の案件やってるんで忘れてしまったわ
761デフォルトの名無しさん
2013/11/21(木) 23:47:38.45 bmp[y][x]をx方向に処理する場合は1次元配列の連続アクセスと同じなので速い
y方向だと無茶苦茶効率悪いから多次元配列のほうが有利
y方向だと無茶苦茶効率悪いから多次元配列のほうが有利
762デフォルトの名無しさん
2013/11/22(金) 09:39:48.63 bmp[x + y * bmp.width]
で、ええやん
で、ええやん
763デフォルトの名無しさん
2013/12/03(火) 03:37:15.12 スマホで眺めるのによいライブラリリファレンスサイト教えてください
764デフォルトの名無しさん
2013/12/14(土) 00:11:16.35 速度が問題になるとこをCLIで書くなよ。
765デフォルトの名無しさん
2013/12/16(月) 23:15:56.37 ある外部staticライブラリをつかうプロジェクトをVS2008で作ったんですが
それをデバッグリンクすると実行時にランタイムでヒープが壊れてるとか
アサートだします。
出すところは外部ライブラリで
static std::map<>;
してグローバルにmapを作ってるところです。
clrなしのプロジェクトを作ってやってみると問題ないんですがなにが悪いんでしょう?
ランタイムライブラリはどちらも/MDdで外部ライブラリと同じです。
それをデバッグリンクすると実行時にランタイムでヒープが壊れてるとか
アサートだします。
出すところは外部ライブラリで
static std::map<>;
してグローバルにmapを作ってるところです。
clrなしのプロジェクトを作ってやってみると問題ないんですがなにが悪いんでしょう?
ランタイムライブラリはどちらも/MDdで外部ライブラリと同じです。
766デフォルトの名無しさん
2013/12/16(月) 23:55:38.87 STLCLIを使えというヘジたんの思し召し
767765
2013/12/17(火) 01:47:56.48 http://stackoverflow.com/questions/4928763/mixed-mode-c-cli-crashing-heap-corruption-in-atexit-static-destructor-regist
/ENTRY:mainが悪いみたいだよ
消してWinMainからmainよんだら直った
/ENTRY:mainが悪いみたいだよ
消してWinMainからmainよんだら直った
768デフォルトの名無しさん
2013/12/17(火) 17:35:03.34 OnPaintBackgroundさせないようにするため
Panel継承したMyPanelを作り、
今までgcnew Panelされてた部分をMyPanelに置き換えたら、
デザイン編集する画面がエラーになりました。
継承したコントロールをデザインで使う方法か
Panelコントロールの再描画を継承しないですむ方法ありますか?
Panel継承したMyPanelを作り、
今までgcnew Panelされてた部分をMyPanelに置き換えたら、
デザイン編集する画面がエラーになりました。
継承したコントロールをデザインで使う方法か
Panelコントロールの再描画を継承しないですむ方法ありますか?
769デフォルトの名無しさん
2014/01/29(水) 15:03:47.19 C++/CLIってUNICODE使うのがデフォ?
770デフォルトの名無しさん
2014/01/29(水) 15:11:01.76 System::String^はそうだな
ネイティブ側は好きなのにしる
ネイティブ側は好きなのにしる
771デフォルトの名無しさん
2014/02/16(日) 08:13:15.62 VC6以来のWinアプリの仕事何だけど
最近は.net使えばグラフ表示とか簡単にできるようになったの?
それともGDI使うやり方健在?
最近は.net使えばグラフ表示とか簡単にできるようになったの?
それともGDI使うやり方健在?
772デフォルトの名無しさん
2014/02/16(日) 09:39:35.75 市販のかexcel使ったほうが早いという状況は変わらん
773デフォルトの名無しさん
2014/02/16(日) 23:57:23.21 EXCELに描かせるのが一番金がかからない
774デフォルトの名無しさん
2014/02/17(月) 13:02:54.72 エクセル最強すぎる。
C++でエクセル出力したい。
CSV無しで
C++でエクセル出力したい。
CSV無しで
775デフォルトの名無しさん
2014/02/17(月) 13:47:00.62 POIかNPOIで
776771
2014/02/17(月) 18:45:06.84 オシロの画面みたいなのを1秒あたり10フレームくらい表示させたいのですが,,,
777デフォルトの名無しさん
2014/02/18(火) 10:09:25.99 今どうやってんの?
DirectX使ってる?
DirectX使ってる?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- クリスマスの「予定なし」54% [少考さん★]
- 地震 [Hitzeschleier★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- お前らって中華行ったら◯ンゲ使う???
- おさかなさんあつまれえ
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
