おそらく、.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
2010/06/10(木) 10:35:20
>>27
つ http://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;
}
つ http://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;
}
2010/06/10(木) 13:07:44
ハンドラ設定ってなんだ普通に_set_invalid_parameter_handlerで呼んでくれたが
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]);
}
}
・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]);
}
}
2010/06/26(土) 12:09:02
マネージクラスのインスタンスをグローバルスコープっぽく参照する方法ないの?
全コンストラクタでやりとりするようなマンドクセ方法がいやだ
全コンストラクタでやりとりするようなマンドクセ方法がいやだ
2010/06/26(土) 15:55:49
クラスの静的メンバに入れとけばいいだけ
2010/06/27(日) 16:28:42
あと public static ね
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
char www[100];
char* ptr;
ptr = www + i;
array<char>^ www = gcnew array<char>(100);
array<char>^ ptr;
ptr = www + i; ← ?
?の部分をご教授くださいm(_ _)m
2010/08/06(金) 00:53:22
CLI配列はポインタじゃないから無理
2010/08/06(金) 10:21:40
pin_ptr してもいいけどさ、www[i] で駄目な理由は何なの?
2010/08/07(土) 08:14:59
C++の感覚なら毎回[i+a]としないで最初からオフセット付けときたいのは当然だろ
無理なので常にwwwとiをセットにして持ちまわるのが普通
メソッドの引数にもオフセットを指定できるようにする
無理なので常にwwwとiをセットにして持ちまわるのが普通
メソッドの引数にもオフセットを指定できるようにする
2010/08/07(土) 22:43:16
perlのように return a, b できるようにしてくんないかな
2010/08/08(日) 12:07:55
.NET4ではTuple型自体は導入されたのでC#やVBでは将来的に
言語レベルでサポートされる可能性はある。
C++/CLIはほぼ見捨てられてるので期待するだけ無駄。
言語レベルでサポートされる可能性はある。
C++/CLIはほぼ見捨てられてるので期待するだけ無駄。
2010/08/17(火) 21:49:08
41デフォルトの名無しさん
2010/08/21(土) 06:53:22 VC2010 EEを使用しています。
RS-232Cで通信を行い、プログラムを終了させようとして
this->Close();
を行うと、エラーメッセージも出ないままプログラムが固まってしまいます。
ポートを閉じてないことが原因かと思い、
serialPort1->Close();
を実行してみたところ、今度はここで同じように固まってしまいました。
http://vsug.jp/tabid/63/forumid/46/postid/9991/scope/posts/Default.aspx
を、参考に、BeginInvokeを使用していますが、ダメでした。
この場合、どこを見れば良いのでしょうか?
よろしくお願いします。
RS-232Cで通信を行い、プログラムを終了させようとして
this->Close();
を行うと、エラーメッセージも出ないままプログラムが固まってしまいます。
ポートを閉じてないことが原因かと思い、
serialPort1->Close();
を実行してみたところ、今度はここで同じように固まってしまいました。
http://vsug.jp/tabid/63/forumid/46/postid/9991/scope/posts/Default.aspx
を、参考に、BeginInvokeを使用していますが、ダメでした。
この場合、どこを見れば良いのでしょうか?
よろしくお願いします。
2010/09/18(土) 16:16:15
画像処理を行いたいのですが、
Bitmap、Image、Graphic・・・どのコンポーネントを使うのがお得なのでしょうか
Bitmap、Image、Graphic・・・どのコンポーネントを使うのがお得なのでしょうか
2010/09/18(土) 16:36:42
4442
2010/09/18(土) 16:48:33 カラー画像をモノクロにしたり、コントラストかけたり、拡大縮小したりの初歩的なことがしたいです。
あと、今のところはCUIで行いたいです。
あと、今のところはCUIで行いたいです。
2010/09/18(土) 18:01:22
>>44
俺はあまり詳しくないが、
ぐぐると
ttp://msdn.microsoft.com/ja-jp/academic/cc998604.aspx
ここで
Bitmap クラスを利用することにより、画像に対してピクセル単位で様々な処理を行うことができます
と書いてある
.netのクラスを使うなら、おそらくやりたいことはこういうことだろう
俺はあまり詳しくないが、
ぐぐると
ttp://msdn.microsoft.com/ja-jp/academic/cc998604.aspx
ここで
Bitmap クラスを利用することにより、画像に対してピクセル単位で様々な処理を行うことができます
と書いてある
.netのクラスを使うなら、おそらくやりたいことはこういうことだろう
2010/09/18(土) 23:40:29
Bitmap使ってみたけれど、画像の保存の仕方がわからない・・・
WriteBitmap("C:\\・・・",data)とかdata.Save(・・・)ってな感じでできないのかな
WriteBitmap("C:\\・・・",data)とかdata.Save(・・・)ってな感じでできないのかな
2010/09/18(土) 23:43:33
普通にSaveメソッドあるだろ
2010/09/19(日) 05:14:50
ホントだ。ごめん、見逃してたわ。
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
--- プログラム ---
#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
2010/09/20(月) 07:25:44
>>49
test.jpegはちゃんとプロジェクトファイルと同じ階層にある?
余計なお世話かも知れないが、.netでやるなら
C#で作ったほうが楽なんじゃないだろうか・・・
わざわざマイナーな環境で挑戦するよりもいいと思うんだが
test.jpegはちゃんとプロジェクトファイルと同じ階層にある?
余計なお世話かも知れないが、.netでやるなら
C#で作ったほうが楽なんじゃないだろうか・・・
わざわざマイナーな環境で挑戦するよりもいいと思うんだが
2010/09/20(月) 08:08:59
>>49
落ちてる場所は、その上の行だぞ。
落ちてる場所は、その上の行だぞ。
2010/09/20(月) 11:32:08
これだけ利用者に嫌われてる言語も珍しいな
初心者が質問するたびに使うなと勧められる
初心者が質問するたびに使うなと勧められる
2010/09/20(月) 13:44:55
2010/09/20(月) 13:53:46
2010/09/20(月) 14:01:21
C++も.NETも使いこなせる人が、止むを得ず使うための物。
使わなくていいなら使いたくない。
使わなくていいなら使いたくない。
2010/09/20(月) 15:01:38
始めようにも資料が無さ過ぎる
MDI作るときどうするかとか
ちょっとしたことの逆引きがネット上で全く出てこない
ようやくOpenGL表示できるようになって
C++の頃の遺産をつかえると思ったのに
MDI作るときどうするかとか
ちょっとしたことの逆引きがネット上で全く出てこない
ようやくOpenGL表示できるようになって
C++の頃の遺産をつかえると思ったのに
2010/09/20(月) 16:33:26
C#でできるから、それを参照にすればいい
なにもかもC++/CLIで済ませようとしないことをお勧めする
なにもかもC++/CLIで済ませようとしないことをお勧めする
2010/09/21(火) 02:27:48
嫌ってはいないんだ
ただ何故かこの言語とのファーストコンタクトというか接し方が
一言入れておかないと不幸にしかならなそうな人が多いのよね
ただ何故かこの言語とのファーストコンタクトというか接し方が
一言入れておかないと不幸にしかならなそうな人が多いのよね
2010/09/21(火) 09:55:56
WinFormsデザイナとかC++/CLIにそもそも要らないんだよな
こういうのがあるから「Visual C++ 2008 で簡単GUIプログラミング」みたいな勘違い本やサイトが出て初心者が道を間違える
こういうのがあるから「Visual C++ 2008 で簡単GUIプログラミング」みたいな勘違い本やサイトが出て初心者が道を間違える
2010/09/21(火) 23:18:00
56ですが自分
C++の文法がある程度使えて
フォームデザインが総合開発環境上で扱えて
至れり尽くせりじゃん、と思ってとっかかりました
現実は情報が全く無く
よくわからないクラスとかいっぱいあって
解説も無くて
どうしようと途方にくれていましたが、QTとかよりは
導入コストも再勉強のコストも無いだろうと信じて使ってます。
だって、CやC++だとGUI作るの辛いんだもん
っていう理由だとダメですか
C++の文法がある程度使えて
フォームデザインが総合開発環境上で扱えて
至れり尽くせりじゃん、と思ってとっかかりました
現実は情報が全く無く
よくわからないクラスとかいっぱいあって
解説も無くて
どうしようと途方にくれていましたが、QTとかよりは
導入コストも再勉強のコストも無いだろうと信じて使ってます。
だって、CやC++だとGUI作るの辛いんだもん
っていう理由だとダメですか
2010/09/21(火) 23:32:23
まあ正直C++の名前が付いてるだけで
マネージ部分はC++とは直接関係なくて学び直し必要だし
それなら素直にC#
C#2.0の範囲までなら多分C++/CLIより簡単だし
サンプルも多いし将来WPF/Silverlightとかにも応用できるし
C#やっとけば逆にC++/CLIを橋渡し用ぐらいなら書けるようになるし
マネージ部分はC++とは直接関係なくて学び直し必要だし
それなら素直にC#
C#2.0の範囲までなら多分C++/CLIより簡単だし
サンプルも多いし将来WPF/Silverlightとかにも応用できるし
C#やっとけば逆にC++/CLIを橋渡し用ぐらいなら書けるようになるし
2010/09/27(月) 13:44:31
けっきょくC++風に文法を汚したC#と普通のC++を無理矢理くっつけただけの代物だからな
2010/09/27(月) 14:03:20
>>62
それを一応形にできたところは評価できる。
それを一応形にできたところは評価できる。
2010/09/27(月) 19:28:25
#define健在なり
2010/09/27(月) 19:37:10
#define private public
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();//コマンドラインから取得//ここでエラー
///////////ここまで/////////////
つまり二重起動時に共有メモリを使いたいのですが、どうしてもできません。
先人方どんなことでもいいので教えてくだせえ。
//////////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();//コマンドラインから取得//ここでエラー
///////////ここまで/////////////
つまり二重起動時に共有メモリを使いたいのですが、どうしてもできません。
先人方どんなことでもいいので教えてくだせえ。
2010/09/28(火) 02:40:23
marshal_asとかじゃねえの
2010/09/28(火) 02:51:50
> LPVOIDからarray<String^>^に変換したい
> lpBuf=Environment::GetCommandLineArgs();//コマンドラインから取得//ここでエラー
コードの方はarray<String^>^からLPVOIDに変換したいように見える
> lpBuf=Environment::GetCommandLineArgs();//コマンドラインから取得//ここでエラー
コードの方はarray<String^>^からLPVOIDに変換したいように見える
2010/09/28(火) 03:19:27
>>67
2008 Express Editionを使っていまして・・・ヘッダーがないらしいです。
http://www.codeguru.com/forum/showthread.php?t=468408
>>68
コマンドライン引数を得た後、array<String^>^に変換しようと思ったのです。
宣言時からarray<String^>^だとMapViewOfFileでつまずいちゃうので・・・。
どちらにせよ、コマンドライン引数を得た後、
共有メモリarray<String^>^として反映できればいいのですが。
2008 Express Editionを使っていまして・・・ヘッダーがないらしいです。
http://www.codeguru.com/forum/showthread.php?t=468408
>>68
コマンドライン引数を得た後、array<String^>^に変換しようと思ったのです。
宣言時からarray<String^>^だとMapViewOfFileでつまずいちゃうので・・・。
どちらにせよ、コマンドライン引数を得た後、
共有メモリarray<String^>^として反映できればいいのですが。
2010/09/28(火) 03:50:07
全体にコードが滅茶苦茶に見えるし
そもそもLoadイベントなんかでやる処理には見えないけど(mainでやることだろ)
共有メモリにString^を書き込みたいのなら
> ttp://www.codeguru.com/forum/showthread.php?t=468408
のリンク先にString^をポインタに変換する方法が載ってるからmemcpyなりなんなりすればいい
複数の文字列を書き込む必要があるなら\0なりなんなりで区切る
そもそもLoadイベントなんかでやる処理には見えないけど(mainでやることだろ)
共有メモリにString^を書き込みたいのなら
> ttp://www.codeguru.com/forum/showthread.php?t=468408
のリンク先にString^をポインタに変換する方法が載ってるからmemcpyなりなんなりすればいい
複数の文字列を書き込む必要があるなら\0なりなんなりで区切る
2010/09/29(水) 06:10:09
共有メモリをやめてSendMessageに妥協しました
とにかく二重起動時にコマンドライン引数を渡すことができました!
皆様、貴重なアドバイスをありがとねん
とにかく二重起動時にコマンドライン引数を渡すことができました!
皆様、貴重なアドバイスをありがとねん
2010/10/03(日) 12:39:42
C++/CLIにおけるsafe_cast,static_cast,dynamic_castの違いについて教えてくださいよ
safe_cast :型が合わないと例外が発生、実行コスト中
dynamic_cast:型が合わないとNULLを返す、実行コスト大
static_cast :型が合わなくても何もしない、実行コスト小
この認識であってますか?
safe_cast :型が合わないと例外が発生、実行コスト中
dynamic_cast:型が合わないとNULLを返す、実行コスト大
static_cast :型が合わなくても何もしない、実行コスト小
この認識であってますか?
2010/10/03(日) 16:11:05
safe_castとdynamic_castのコストはほぼ同じ。
static_castが速くなるのはダウンキャストの場合だけ。静的に解決できる場合はsafe_castと同じ。
static_castが速くなるのはダウンキャストの場合だけ。静的に解決できる場合はsafe_castと同じ。
2010/10/03(日) 20:39:28
>>66
いまさらだけど、.NET Framework 4以降ならMemoryMappedFileクラスを使えばいいと思うよ。
いまさらだけど、.NET Framework 4以降ならMemoryMappedFileクラスを使えばいいと思うよ。
2010/10/03(日) 20:52:42
.NETのハンドルのダウンキャストにstatic_cast使うのは激しく疑問
公式の説明でもパフォーマンスをえらく強調してるが、
そのためにわざわざ検証不能コードにしてまでやるほどのものなのかと
公式の説明でもパフォーマンスをえらく強調してるが、
そのためにわざわざ検証不能コードにしてまでやるほどのものなのかと
2010/10/08(金) 20:22:23
http://www.infoq.com/jp/news/2010/10/Co-Evolution-Doubts
>どうやらそれらは、レガシC++アプリケーションをWindows Phoneに移植したいと考えている多くの開発者にとって、C++/CLIは、ベストなルートに見えるのであろう。
地獄への道は善意で舗装されている
>どうやらそれらは、レガシC++アプリケーションをWindows Phoneに移植したいと考えている多くの開発者にとって、C++/CLIは、ベストなルートに見えるのであろう。
地獄への道は善意で舗装されている
2010/10/08(金) 20:28:08
筆者自身は否定的に見えるけど、まだそんなこと考えてる人もいるんだねぇ
2010/10/08(金) 20:52:06
筆者ほんとにC++/CLI触ったことあるのかな
Silverlightで使える範囲のC++/CLIはC++とは全く互換性なくてただの汚いC#なんだけど
Silverlightで使える範囲のC++/CLIはC++とは全く互換性なくてただの汚いC#なんだけど
2010/10/08(金) 21:47:31
絶対的処理性能が必要な場合か、過去資産使う時以外はメリットよな?
2010/10/08(金) 22:05:21
検証可能なコードしか使えない場合は処理性能同じだし過去資産も使えないよ
2010/10/09(土) 21:36:15
音の再生ってC++/CLIでできるの?
画像の場合ピクチャボックスみたいな感じに楽に音楽再生させたいのだけど
画像の場合ピクチャボックスみたいな感じに楽に音楽再生させたいのだけど
2010/10/10(日) 23:03:16
ネイティブのC++でできるなら同じ方法でできる
.NET使ってもできる
どちらにしてもC++/CLIとは直接関係ない話
.NET使ってもできる
どちらにしてもC++/CLIとは直接関係ない話
2010/10/11(月) 00:46:33
サンクス
これ絶対初心者向けじゃない気がする
これ絶対初心者向けじゃない気がする
2010/10/11(月) 00:49:57
「気がする」ではない。
絶対初心者向けではない、その通りだ。
絶対初心者向けではない、その通りだ。
2010/10/11(月) 06:02:46
ですよね
俺みたいな勘違い君が集まるから
スレタイ変えると平和になる気がする
俺みたいな勘違い君が集まるから
スレタイ変えると平和になる気がする
2010/10/11(月) 11:40:19
「C#でアプリを作っているが、C++のライブラリで音を鳴らしたい」もしくは
「C++(非CLI)でアプリを作っているが、.NETのライブラリを使って音を鳴らしたい」
→そこだけC++/CLIを部分的に使おう
という風に特別な意図を持って言語であって、
>>81のような質問が出てくる時点でC++/CLIを使うのは間違っている
「C++(非CLI)でアプリを作っているが、.NETのライブラリを使って音を鳴らしたい」
→そこだけC++/CLIを部分的に使おう
という風に特別な意図を持って言語であって、
>>81のような質問が出てくる時点でC++/CLIを使うのは間違っている
2010/10/11(月) 12:08:45
前者はCLIでなくていいだろ
2010/10/11(月) 13:10:09
そんなに大きなライブラリでなければ>>19方式がベターだな
2010/10/11(月) 15:50:17
初心者用のC++/CLIじゃなくて
C++/CLIの初心者向けのスレなんだよなw
C++/CLIの初心者向けのスレなんだよなw
2010/10/11(月) 16:27:40
C++/CLI初心者にクラスチェンジできる条件が、
1) C++習得レベル一定以上
2) .NET習得レベル一定以上
だからな
1) C++習得レベル一定以上
2) .NET習得レベル一定以上
だからな
2010/10/12(火) 02:47:19
C++とC#があった上で補助的に使うもんだからねぇ
みんな言うように初心者が使う物じゃないね。
みんな言うように初心者が使う物じゃないね。
92デフォルトの名無しさん
2010/10/12(火) 15:18:47 こんなのに熟練したくないわ
どうしても必要なときにちょっと調べてその場が凌げれば充分
どうしても必要なときにちょっと調べてその場が凌げれば充分
2010/10/12(火) 18:55:47
C++にGCを導入した言語。そう考えれば実用性は高いはず。
2010/10/12(火) 19:17:34
C++と、GCをサポートした別の言語を混ぜた言語。
アンマネージとマネージの境界は常に意識する必要がある。
アンマネージとマネージの境界は常に意識する必要がある。
2010/10/12(火) 20:52:46
仕事では使いたくないが、趣味でいじるのなら楽しい。
Express Editionだと実行中のプロセスにアタッチできるのが
C++しかないってのも使ってる理由のひとつ。
Express Editionだと実行中のプロセスにアタッチできるのが
C++しかないってのも使ってる理由のひとつ。
2010/10/27(水) 21:11:21
日経のムックでC++/CLIが宣伝されてるな。
簡単GUIプログラミング!みたいな見事な勘違い記事だった。騙されて道を誤る初心者が不憫でならない。
簡単GUIプログラミング!みたいな見事な勘違い記事だった。騙されて道を誤る初心者が不憫でならない。
2010/10/30(土) 18:38:53
道を踏み外しそうになり、C++Builderにシフトできました
2010/10/31(日) 02:19:24
初心者はC#いじっとけ
2010/11/02(火) 23:54:01
増えた言語仕様って、ref, ^, gcnew だけでしょ?
100デフォルトの名無しさん
2010/11/02(火) 23:59:30 ジェネリック,トラッキング参照,ファイナライザ,プロパティ,イベント,デリゲート, etc
CLI拡張の部分だけでも言語仕様書の量がC#並み
CLI拡張の部分だけでも言語仕様書の量がC#並み
101デフォルトの名無しさん
2010/11/03(水) 00:03:31 2種類の言語が同居してる構造だな。
102デフォルトの名無しさん
2010/11/03(水) 04:25:15 D言語よりマシ。
103デフォルトの名無しさん
2010/11/03(水) 16:45:49 Z言語になるころには
なんとなくこんな感じ、って思い描いたものが
1行で組みあがるくらいに
なるわけねぇ
なんとなくこんな感じ、って思い描いたものが
1行で組みあがるくらいに
なるわけねぇ
104デフォルトの名無しさん
2010/11/03(水) 17:28:32 ref classのメンバーに構造体がある場合、その構造体のポインターはどうやって取得すればいいの?
pin_ptr<SCRIPT_STRING_ANALYSIS*> pssa = &(this->構造体型の変数);
こういう風にしてもうまくいかないんだが
pin_ptr<SCRIPT_STRING_ANALYSIS*> pssa = &(this->構造体型の変数);
こういう風にしてもうまくいかないんだが
105デフォルトの名無しさん
2010/11/03(水) 17:41:24106デフォルトの名無しさん
2010/11/11(木) 20:14:40 これって変数名とかに全角文字がつかえるのだな。
int 数値 = 0;
みたいに。
うっかり全角アルファベット混ぜたりしたら大変だな。
int 数値 = 0;
みたいに。
うっかり全角アルファベット混ぜたりしたら大変だな。
107デフォルトの名無しさん
2010/11/11(木) 20:26:13 それCLIでない方のC++でもできるよ
コンパイラが共通なんだから
コンパイラが共通なんだから
108デフォルトの名無しさん
2010/11/11(木) 22:11:50109デフォルトの名無しさん
2010/11/12(金) 04:36:06 どっかでOが定義済みでないと通らないだろ
110デフォルトの名無しさん
2010/11/12(金) 13:04:12 Windows Mobile用のWM_GESTUREが入ったgesture.hは何を入れたら良いんですか?
Windows Mobile 6 Professional SDK Refresh.msiと
試しにVS2010EEを入れてみたけど
ダメでした
Windows Mobile 6 Professional SDK Refresh.msiは2環境でインストールして
いるのでインストーラがコケたとかでは無さそうです
定義だけなのでGoogle Codeとかでも良いのですが、MS系は上手く手に入りません。
くだすれですがよろしくお願いします。
Windows Mobile 6 Professional SDK Refresh.msiと
試しにVS2010EEを入れてみたけど
ダメでした
Windows Mobile 6 Professional SDK Refresh.msiは2環境でインストールして
いるのでインストーラがコケたとかでは無さそうです
定義だけなのでGoogle Codeとかでも良いのですが、MS系は上手く手に入りません。
くだすれですがよろしくお願いします。
111デフォルトの名無しさん
2010/11/13(土) 12:22:30 queue<array<String^>^ > queue_dwnload;
こう宣言すると
System.ArgumentException' の初回例外が発生しました。
とイミディエイトウィンドウにメッセージが出るんだけど
宣言の仕方どこが間違ってますか?
こう宣言すると
System.ArgumentException' の初回例外が発生しました。
とイミディエイトウィンドウにメッセージが出るんだけど
宣言の仕方どこが間違ってますか?
112デフォルトの名無しさん
2010/11/13(土) 17:42:15 つ STL/CLI
#include <cliext/queue>
using namespace System;
cliext::queue<array<String^>^ > queue_dwnload;
#include <cliext/queue>
using namespace System;
cliext::queue<array<String^>^ > queue_dwnload;
113デフォルトの名無しさん
2010/11/13(土) 18:21:47 すまん書き足りなかった、インクルードはちゃんとしてて
プログラムも正常に動作してます
それでもう少しシンプルなコードで試してみたんだけど
VS2008で新規作成、プロジェクト、CLRのwindowsフォームアプリケーション
のテンプレートでプロジェクトを作成して
#include <cliext/queue>を追加
~Form1(){}の下あたりに
cliext::queue<array<String^>^ > queue_dwnload;を追加
デバッグ実行する
これだけでメッセージが出ます、キューの宣言は間違ってないみたいだけど
何が原因なんだろう?
プログラムも正常に動作してます
それでもう少しシンプルなコードで試してみたんだけど
VS2008で新規作成、プロジェクト、CLRのwindowsフォームアプリケーション
のテンプレートでプロジェクトを作成して
#include <cliext/queue>を追加
~Form1(){}の下あたりに
cliext::queue<array<String^>^ > queue_dwnload;を追加
デバッグ実行する
これだけでメッセージが出ます、キューの宣言は間違ってないみたいだけど
何が原因なんだろう?
114デフォルトの名無しさん
2010/11/13(土) 19:06:11 VS2010にしてしまっているので再現できないが、
~Form1()と同じprotectedには出来ないのかコンパイル時に警告がでる。
privateにしたらどう?
private: cliext::queue<array<String^>^ > queue_dwnload;
~Form1()と同じprotectedには出来ないのかコンパイル時に警告がでる。
privateにしたらどう?
private: cliext::queue<array<String^>^ > queue_dwnload;
115デフォルトの名無しさん
2010/11/13(土) 22:52:09 private:付けてもだめでした
116デフォルトの名無しさん
2010/11/14(日) 14:34:28 とりあえず問題の切り分けだな。
まずコンパイルが警告なしで通るかどうか。
通るならデバッグ実行とデバッグなし実行で差があるかどうか。
別のPCでも再現するかどうか。
まずコンパイルが警告なしで通るかどうか。
通るならデバッグ実行とデバッグなし実行で差があるかどうか。
別のPCでも再現するかどうか。
117デフォルトの名無しさん
2010/12/02(木) 11:27:46 使用環境:VS2008 Professional Edition
プロジェクト:CLR クラスライブラリ
目的:コピーコンストラクタ、代入演算子を潰したい
エラーの出ないコード。
ref class Hoge sealed {
private:
Hoge % operator=( Hoge const % rhd ) { return *this; } ;
Hoge( Hoge const % src ) {} ;
}
実装したいコード。
ref class Hoge sealed {
private:
Hoge % operator=( Hoge const % ) ; // error LNK2020 未解決のトークン(06000001) Hoge::op_Assign
Hoge( Hoge const % ) ; // error LNK2020 未解決のトークン(06000003) Hoge::ctor
}
C++/CLIでメンバ関数の実装をせずに放置というのは可能でしょうか?
プロジェクト:CLR クラスライブラリ
目的:コピーコンストラクタ、代入演算子を潰したい
エラーの出ないコード。
ref class Hoge sealed {
private:
Hoge % operator=( Hoge const % rhd ) { return *this; } ;
Hoge( Hoge const % src ) {} ;
}
実装したいコード。
ref class Hoge sealed {
private:
Hoge % operator=( Hoge const % ) ; // error LNK2020 未解決のトークン(06000001) Hoge::op_Assign
Hoge( Hoge const % ) ; // error LNK2020 未解決のトークン(06000003) Hoge::ctor
}
C++/CLIでメンバ関数の実装をせずに放置というのは可能でしょうか?
118デフォルトの名無しさん
2010/12/02(木) 18:43:31 そもそもref classは定義しない限りコピーとか無理じゃなかったか
119デフォルトの名無しさん
2010/12/02(木) 19:44:11 C#などから使わせるつもりなら演算子のオーバーロードは全部staticにしないといけないし
代入演算子やコピーコンストラクタはそもそもオーバーロードできないし
constも使えないし参照渡しや参照返しもダメ(そもそもref classだから無意味)
つかまずC#やるべき。.NETの常識が無さすぎ。
代入演算子やコピーコンストラクタはそもそもオーバーロードできないし
constも使えないし参照渡しや参照返しもダメ(そもそもref classだから無意味)
つかまずC#やるべき。.NETの常識が無さすぎ。
120117
2010/12/02(木) 22:33:30 >>118
そうなんですか、回答ありがとうござます。
>>119
回答ありがとうございます。
http://msdn.microsoft.com/ja-jp/library/sy1y3y1t(VS.80).aspx
このサンプルコードのコンパイルが通らなかったのですが、そもそもサンプルが間違ってるという事なのでしょうか?
あと、.NETの常識を学ぶのにオススメの書籍などあれば教えていただけると幸いです。
そうなんですか、回答ありがとうござます。
>>119
回答ありがとうございます。
http://msdn.microsoft.com/ja-jp/library/sy1y3y1t(VS.80).aspx
このサンプルコードのコンパイルが通らなかったのですが、そもそもサンプルが間違ってるという事なのでしょうか?
あと、.NETの常識を学ぶのにオススメの書籍などあれば教えていただけると幸いです。
121デフォルトの名無しさん
2010/12/03(金) 11:24:33 Lock に関係ない実装は省略して書いてるだけでしょ
間違ってると言うより、そこは問題とは関係ない部分なだけ
間違ってると言うより、そこは問題とは関係ない部分なだけ
122117
2010/12/03(金) 12:41:30123デフォルトの名無しさん
2010/12/03(金) 15:36:41 C++/CLIではref classのメソッドにconstを付けられないから
C#やVBと相互運用しないとしてもconstパラメータは事実上役に立たない。
C#やVBと相互運用しないとしてもconstパラメータは事実上役に立たない。
124デフォルトの名無しさん
2010/12/04(土) 13:39:31 趣旨がわからないね。
C++スタイルでやりたいだけなら、そもそもC++/CLI 使う必要性がないんでない?
C++スタイルでやりたいだけなら、そもそもC++/CLI 使う必要性がないんでない?
125117
2010/12/04(土) 14:33:18126デフォルトの名無しさん
2010/12/04(土) 14:48:36 %もいらん
ref classだから常にポインタ渡し
ref classだから常にポインタ渡し
127デフォルトの名無しさん
2010/12/05(日) 13:03:24 >>124
MSのサンプルだか自動生成されるコードだかで、
あんな風にrefクラス上でC++っぽいことをやっているものを見た覚えがある。
元の質問者のコードもそういうのに影響されたのではないかと思う。
MSのサンプルだか自動生成されるコードだかで、
あんな風にrefクラス上でC++っぽいことをやっているものを見た覚えがある。
元の質問者のコードもそういうのに影響されたのではないかと思う。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【速報】俳優の三浦春馬さん、自宅で死亡 自殺とみられる←この衝撃を超える速報テロ、いまだない
- 衛生的に気持ち悪くて性風俗店行ったこと無いんだ
- 【悲報】タンパク質さん、寿命を縮めることが判明
