おそらく、.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
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使ってる?
778デフォルトの名無しさん
2014/02/18(火) 13:15:15.29 WPFなら秒間60フレーム余裕だよ
779デフォルトの名無しさん
2014/02/19(水) 15:44:04.10 C#でも余裕だな
3日もあればそれなりの物作れるし
3日もあればそれなりの物作れるし
780デフォルトの名無しさん
2014/02/20(木) 17:38:23.07 今のPCなら10fpsは全くもって問題無い
俺は初めて自力描画したが、25ms間隔でUSB送信+描画が全く問題無かった
俺は初めて自力描画したが、25ms間隔でUSB送信+描画が全く問題無かった
781デフォルトの名無しさん
2014/02/22(土) 18:10:01.30 C++プロジェクトとC#プロジェクトからなるソリューションを
作る場合は、DllImport を使うのが正統的なやり方ですか?
作る場合は、DllImport を使うのが正統的なやり方ですか?
782デフォルトの名無しさん
2014/02/22(土) 18:18:26.53 C++/CLIを使うのも別に不当ではないぞ
好きにしろ
好きにしろ
783デフォルトの名無しさん
2014/02/22(土) 18:19:01.60 エスパー呼んでる?
784デフォルトの名無しさん
2014/02/22(土) 18:21:31.68 でもさ、C++/CLIって今はWindowsフォームアプリ作れなくなったというか、非推奨でしょ?
ヒッジョーに残念なんだけど、俺はクソなC++Builder使ってる
ヒッジョーに残念なんだけど、俺はクソなC++Builder使ってる
785781
2014/02/22(土) 19:14:11.22 >>782,783,784
最近C++始めました。今まで作ったC#の自作ライブラリをC++化しようとしています。
CLRクラスプロジェクトでクラスライブラリを作ってC#アプリから使う場合は、普通に
参照設定して使えましたが、でもそれだと、クラスライブラリの中身がReflectorなどで
見えてしまうので、それで/clr無しでビルドしてDllImportの方法でC#から使えたのですが、
これが正しいやり方かどうか知りたかったのです。要するに、逆コンパイルできない
(あるいは難しい)クラスライブラリを作りたいのですが。
最近C++始めました。今まで作ったC#の自作ライブラリをC++化しようとしています。
CLRクラスプロジェクトでクラスライブラリを作ってC#アプリから使う場合は、普通に
参照設定して使えましたが、でもそれだと、クラスライブラリの中身がReflectorなどで
見えてしまうので、それで/clr無しでビルドしてDllImportの方法でC#から使えたのですが、
これが正しいやり方かどうか知りたかったのです。要するに、逆コンパイルできない
(あるいは難しい)クラスライブラリを作りたいのですが。
786デフォルトの名無しさん
2014/02/22(土) 19:25:29.69 難読化しろ
787781
2014/02/22(土) 20:01:19.06 >>786
それも考えたのですが、C#のDLLを難読化するくらいなら、C++でDLL
作るほうが手間がかからないかなと思ったのですが。
皆さん、こういう用途には、VS2013付属の難読化ソフトで十分ですか?
それも考えたのですが、C#のDLLを難読化するくらいなら、C++でDLL
作るほうが手間がかからないかなと思ったのですが。
皆さん、こういう用途には、VS2013付属の難読化ソフトで十分ですか?
788デフォルトの名無しさん
2014/02/22(土) 21:16:20.23 秘密にしたいところはC++で書くよ
789デフォルトの名無しさん
2014/02/24(月) 10:59:05.87 ILMergeはC++/CLIでも使えますか?試したら出来ませんでした。
790デフォルトの名無しさん
2014/02/24(月) 12:00:23.44 mixed moeだとだめかもしれんね。/clr:safeや/clr:pureは試した?
791デフォルトの名無しさん
2014/02/24(月) 12:18:42.22 > clr:safeや/clr:pure
これ使うならC++/CLI使う理由が消えないか?
難読化がC++/CLI使う目的ならなんか違う気がする
業務か趣味かでも違うし
これ使うならC++/CLI使う理由が消えないか?
難読化がC++/CLI使う目的ならなんか違う気がする
業務か趣味かでも違うし
792デフォルトの名無しさん
2014/02/24(月) 13:20:04.45 難読化の質問の続きなのか?
793デフォルトの名無しさん
2014/02/26(水) 11:45:55.31 VS2013に難読化のソフト付属するようになったのか
794デフォルトの名無しさん
2014/02/26(水) 14:39:40.34 わざわざネイティブコードがちょろっとついてたら、まっさきにそこ覗くけどね
まあしっかり考えて。
まあしっかり考えて。
795デフォルトの名無しさん
2014/02/26(水) 15:10:45.06 確かに、覗いてみたくなるな
Dependency Walkerに放り込むだけでもそれなりに見えてくるしな
Dependency Walkerに放り込むだけでもそれなりに見えてくるしな
796デフォルトの名無しさん
2014/02/26(水) 22:42:23.74 確かにすげー怪しいもんなw
むしろ、木を隠すなら森の中じゃないかな。
むしろ、木を隠すなら森の中じゃないかな。
797デフォルトの名無しさん
2014/02/27(木) 00:13:46.26 ILが解析しやすいのはディスコンパイルできることよりも、
型名やメソッド名などのメタ情報がそのまま残ってることだから、
その辺改善したほうがましだな。
簡単な難読化ツールのやってることもその程度だし
型名やメソッド名などのメタ情報がそのまま残ってることだから、
その辺改善したほうがましだな。
簡単な難読化ツールのやってることもその程度だし
798デフォルトの名無しさん
2014/03/08(土) 21:13:21.28799デフォルトの名無しさん
2014/03/10(月) 10:17:51.76 C++でのデザイナ機能も一応残してるんだよね
っていうか、Expressでも出来るんだ
っていうか、Expressでも出来るんだ
800デフォルトの名無しさん
2014/03/10(月) 20:21:18.79 >>799
できますよ
できますよ
801デフォルトの名無しさん
2014/03/11(火) 10:47:47.08 ATL/MFCもexpressでやらせてくれたらいいのに
あったらあったでそれなりに便利
あったらあったでそれなりに便利
802デフォルトの名無しさん
2014/03/11(火) 10:59:46.32 ATL/MFC無しでもCStringくらい標準にしてくれるといいのにね
System::Stringからの変換がスマートにできるのに
System::Stringからの変換がスマートにできるのに
803デフォルトの名無しさん
2014/03/11(火) 11:35:40.31 ATL/MFCまで入れちゃったら有償版と変わらないのでは?
804デフォルトの名無しさん
2014/03/11(火) 15:16:32.72 まあそれ以外にも違いはいろいろあるし
805デフォルトの名無しさん
2014/03/11(火) 23:00:52.68 ウィザードやリソースエディタなんかがないとまともに開発には使えないだろうけど、
MFCのコードをビルドだけできるようヘッダとライブラリを公開して欲しいとは思う。
MFCのコードをビルドだけできるようヘッダとライブラリを公開して欲しいとは思う。
806デフォルトの名無しさん
2014/03/15(土) 21:18:07.18ID:KpGSNq9a C++/CLIとC#を相互運用するとき、IDisposableの扱いについて参考になるWebページがあれば教えてください。
807デフォルトの名無しさん
2014/03/20(木) 14:59:59.03ID:svYczKSB 初歩的な質問ですみません。
^ がついた関数と ^ がついていない関数の間でやりとりをしたいのですが、
やりかたが分かりません
例えば時間を再設定するときに、
DateTime^ dth = gcnew DateTime(2014, 3, 20, 0, 0) と
DateTime dt = DateTime(2014, 3, 20, 0, 10) を作ったとして、
dth = dth->AddSeconds(10) とかではなく、
dth = dt.(なにかの変換演算子) で時間を再設定してみたいのですが、
なにか方法はありませんか?
^ がついた関数と ^ がついていない関数の間でやりとりをしたいのですが、
やりかたが分かりません
例えば時間を再設定するときに、
DateTime^ dth = gcnew DateTime(2014, 3, 20, 0, 0) と
DateTime dt = DateTime(2014, 3, 20, 0, 10) を作ったとして、
dth = dth->AddSeconds(10) とかではなく、
dth = dt.(なにかの変換演算子) で時間を再設定してみたいのですが、
なにか方法はありませんか?
808デフォルトの名無しさん
2014/03/20(木) 15:11:41.08ID:IvzGN7OH dth = dt;
dth = %dt; // 丁寧に書いた場合
dth = %dt; // 丁寧に書いた場合
809デフォルトの名無しさん
2014/03/20(木) 17:32:35.09ID:yZVXWZKu C++/CLIでは値型とクラスの場合で書き方が変わったりするから要注意だな
810デフォルトの名無しさん
2014/03/20(木) 17:57:34.38ID:iFIpmoD3 C++/CLIで作っているフォームの表示が気づいたらXP仕様になってしまいました
過去につくった物はWin8仕様の表示になっているのですがどこの設定で変更できるのでしょうか
環境はWindows8.1でVS2012です
過去につくった物はWin8仕様の表示になっているのですがどこの設定で変更できるのでしょうか
環境はWindows8.1でVS2012です
811デフォルトの名無しさん
2014/03/20(木) 20:04:05.05ID:svYczKSB >> 808-809
ありがとうございます。さっそく参考にしていろいろ調べてみますv
ありがとうございます。さっそく参考にしていろいろ調べてみますv
812デフォルトの名無しさん
2014/03/20(木) 20:28:07.59ID:svYczKSB 807です。質問の時に代入する方向が逆でしたが、もらったヒントで
無事解決できました m(_ _)m
dth = %dt; // DateTime^ = DateTime
dt = static_cast<DateTime>(dth); // DateTime = DateTime^
無事解決できました m(_ _)m
dth = %dt; // DateTime^ = DateTime
dt = static_cast<DateTime>(dth); // DateTime = DateTime^
813デフォルトの名無しさん
2014/03/20(木) 21:58:05.31ID:geioZCY7 2段目のはこれでいけるな。
dt = *dth
-> が *. なのもCの文法と同じ。
dth->AddSencond(...)
(*dth).AddSencond(...)
dt = *dth
-> が *. なのもCの文法と同じ。
dth->AddSencond(...)
(*dth).AddSencond(...)
814デフォルトの名無しさん
2014/03/20(木) 22:26:22.96ID:svYczKSB >>813
一文字で決まるおまじない教えてくれてありがとうですv
一文字で決まるおまじない教えてくれてありがとうですv
815デフォルトの名無しさん
2014/03/23(日) 21:20:34.11ID:HlHPSHO4 質問失礼します
クラスaの配列をメンバ変数に持つクラスbを作りたいのですが、クラスaの配列の初期化がうまく行きません。(コンパイル自体はできます)
これは初期化の方法が間違っているのでしょうか?
それともそのような設計(クラス配列を持つクラス)自体がよろしく無いものなんでしょうか?
ref class a
{
int x;
public: a(int num){x = num;}
};
ref class b
{
array<a^>^ array_a;
public:
b(){
array_a = gcnew array<a^>(10);
for (int i = 0; i < array_a->Length; i++)
{
array_a[i] = gcnew a(i);
}
}
};
クラスaの配列をメンバ変数に持つクラスbを作りたいのですが、クラスaの配列の初期化がうまく行きません。(コンパイル自体はできます)
これは初期化の方法が間違っているのでしょうか?
それともそのような設計(クラス配列を持つクラス)自体がよろしく無いものなんでしょうか?
ref class a
{
int x;
public: a(int num){x = num;}
};
ref class b
{
array<a^>^ array_a;
public:
b(){
array_a = gcnew array<a^>(10);
for (int i = 0; i < array_a->Length; i++)
{
array_a[i] = gcnew a(i);
}
}
};
816デフォルトの名無しさん
2014/03/23(日) 21:31:58.22ID:lzq9JOXE 問題なさそうだけど どう「うまく行きません」なの?
817デフォルトの名無しさん
2014/03/23(日) 22:35:57.72ID:HlHPSHO4 実体がない(?)と言いますか、array_aに何かしようとすると、その関数のそれ以降の処理をすっ飛ばすようになります。
例えばクラスaにint GetX(){return x;}、
クラスbにint GetArrayA(int num){return array[num]->GetX();}みたいな関数を追加して、
ウィンドウズFormの方でLabelを一つ用意します。
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
b^ test;
test->GetArrayA(0);
Label1->Text = "だいじょうぶ";
}
これだと、Label1->Textは「だいじょうぶ」に変わらずLabel1のままです。
しかし
>test->GetArrayA(0);
の部分をコメントアウトにするとLabel1->Textは「だいじょうぶ」になります。
例えばクラスaにint GetX(){return x;}、
クラスbにint GetArrayA(int num){return array[num]->GetX();}みたいな関数を追加して、
ウィンドウズFormの方でLabelを一つ用意します。
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
b^ test;
test->GetArrayA(0);
Label1->Text = "だいじょうぶ";
}
これだと、Label1->Textは「だいじょうぶ」に変わらずLabel1のままです。
しかし
>test->GetArrayA(0);
の部分をコメントアウトにするとLabel1->Textは「だいじょうぶ」になります。
818デフォルトの名無しさん
2014/03/23(日) 23:19:57.49ID:ZHSALumd これってコンパイル通る?>>817の方。
819デフォルトの名無しさん
2014/03/23(日) 23:36:35.34ID:HlHPSHO4 >>818
817もコンパイルは通ります
あと、今試してみたんですが出来上がったexeファイルを起動してみると
「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。(中略)
オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ますね……
こちらもまたtest->GetArrayA(0);の部分をコメントアウトすると問題なく起動します
817もコンパイルは通ります
あと、今試してみたんですが出来上がったexeファイルを起動してみると
「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。(中略)
オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ますね……
こちらもまたtest->GetArrayA(0);の部分をコメントアウトすると問題なく起動します
820デフォルトの名無しさん
2014/03/24(月) 01:02:03.43ID:XCyA/SAw test =gcnew 以下略つけてみたら?
821デフォルトの名無しさん
2014/03/24(月) 01:50:12.79ID:Ae/Hf3r6822デフォルトの名無しさん
2014/03/24(月) 11:45:41.86ID:R2MpMn2O デバッガ使えない環境なのかな、、、
例外起きた時は出力ウィンドウに出るぜ
例外起きた時は出力ウィンドウに出るぜ
823デフォルトの名無しさん
2014/04/26(土) 12:11:13.54ID:J0aLOZMr c#のdynamic型に相当するものを
c++/cliで何と書けば良いですか?
c++/cliで何と書けば良いですか?
824デフォルトの名無しさん
2014/04/27(日) 21:57:27.97ID:t/xZR1S/ 多分無い
825デフォルトの名無しさん
2014/05/09(金) 18:40:24.14ID:avbF2wuD c++/cli勉強したいと思っています。
>>array<a^>^ array_a;
の<a^>^ってどいういう意味ですか?
顔文字に見えます。ググりたいのですが^>^でググっても
ヒットしません。キーワードを教えてけろ。
>>array<a^>^ array_a;
の<a^>^ってどいういう意味ですか?
顔文字に見えます。ググりたいのですが^>^でググっても
ヒットしません。キーワードを教えてけろ。
826デフォルトの名無しさん
2014/05/09(金) 18:46:04.26ID:Mn4+ksrv トラッキングハンドル
827デフォルトの名無しさん
2014/05/09(金) 19:05:13.77ID:avbF2wuD >>826
ありがとうございます。さっそくググってみます。
ありがとうございます。さっそくググってみます。
828デフォルトの名無しさん
2014/05/11(日) 22:02:14.61ID:OFkZfhFe 参照型を内部に保持するコンテナの参照を宣言かな。
829デフォルトの名無しさん
2014/05/13(火) 09:25:37.06ID:QKhoqLLT ジェネリックメソッドの継承がうまく行きません。
generic<typename T> ref struct B;
ref struct A abstract {
generic<typename U> virtual A ^f(B<U> ^u) = 0;
};
//C4570 明示的に抽象として宣言せずに抽象関数を含んでいます
generic<typename T> ref struct B : A {
//C4490 オーバーライド指定子が不適切
generic<typename U> virtual A ^f(B<U> ^u) override {
return u;
}
};
同じ戻り値と引数でも、同じ関数だと認識されないようなのですが、どのようにすれば良いですか?
generic<typename T> ref struct B;
ref struct A abstract {
generic<typename U> virtual A ^f(B<U> ^u) = 0;
};
//C4570 明示的に抽象として宣言せずに抽象関数を含んでいます
generic<typename T> ref struct B : A {
//C4490 オーバーライド指定子が不適切
generic<typename U> virtual A ^f(B<U> ^u) override {
return u;
}
};
同じ戻り値と引数でも、同じ関数だと認識されないようなのですが、どのようにすれば良いですか?
830デフォルトの名無しさん
2014/05/13(火) 10:02:57.61ID:Kixx6i0Q ttp://social.msdn.microsoft.com/forums/vstudio/ja-JP/2f138907-64a3-4326-bfea-d0e4b3c15fa8
仕様っぽいのであきらめてC++/CLI投げ捨ててC#で書く
仕様っぽいのであきらめてC++/CLI投げ捨ててC#で書く
831デフォルトの名無しさん
2014/05/13(火) 10:44:57.11ID:QKhoqLLT なるほど・・・ありがとうございました。
832デフォルトの名無しさん
2014/05/13(火) 23:30:42.34ID:OiuzuWyN C#でdelegateに設定されたメソッドを調べるのにGetInvocationListを参照していたのですが、
C++/CLIで同じようなことをするとコンパイルエラーが発生してしまいます。
どのようにコーディングすればよいでしょうか?
// C#
http://ideone.com/O4j7TX
// C++/CLI
http://ideone.com/Lazyxs
※実際は23行目のauto mcd = (MulticastDelegate^)hoge->Piyo;で
error C3918: 使用するには、'Delegate::Hoge::Piyo' がデータ メンバーでなければなりません
といったエラーが発生してしまいます。
C++/CLIで同じようなことをするとコンパイルエラーが発生してしまいます。
どのようにコーディングすればよいでしょうか?
// C#
http://ideone.com/O4j7TX
// C++/CLI
http://ideone.com/Lazyxs
※実際は23行目のauto mcd = (MulticastDelegate^)hoge->Piyo;で
error C3918: 使用するには、'Delegate::Hoge::Piyo' がデータ メンバーでなければなりません
といったエラーが発生してしまいます。
833デフォルトの名無しさん
2014/05/13(火) 23:41:08.55ID:RH21G1qI C++/CLIの方はeventじゃん
834デフォルトの名無しさん
2014/05/13(火) 23:47:44.50ID:OiuzuWyN835デフォルトの名無しさん
2014/05/14(水) 08:39:30.20ID:ICklhj5Y event自体は正当で使う側が問題なのに、eventの方でコンパイルエラー言われても
836デフォルトの名無しさん
2014/05/14(水) 11:14:20.64ID:k1JIQlQE ワロタ
837デフォルトの名無しさん
2014/05/14(水) 23:09:07.27ID:OfRhuTl1 すいません>>832です。
禿しく勘違いしてました。C#のeventはシンタックスシュガーなんですね。
event EventHandler^ Piyo
{
void add(EventHandler^ value) { mPiyo += value; }
void remove(EventHandler^ value) { mPiyo -= value; }
void raise(Object^ sender, EventArgs^ e) { mPiyo(sender, e); }
}
EventHandler^ mPiyo;
などとしたら上手くいきました。
禿しく勘違いしてました。C#のeventはシンタックスシュガーなんですね。
event EventHandler^ Piyo
{
void add(EventHandler^ value) { mPiyo += value; }
void remove(EventHandler^ value) { mPiyo -= value; }
void raise(Object^ sender, EventArgs^ e) { mPiyo(sender, e); }
}
EventHandler^ mPiyo;
などとしたら上手くいきました。
838デフォルトの名無しさん
2014/05/26(月) 03:20:04.74ID:l0k3Jdk0 c++/cli初めて作成しています。
c++プロジェクトでライブラリを作成して
void func1(const char *p){
cout << p << endl;
}
を定義して、
c++/cliプロジェクトでこの関数を呼び出すと、
func1("Hello World"); //呼び出し成功
func1("Hello" + "World"); //型 "System::String ^" の引数は型 "const char *" のパラメーターと互換性がありません
となったので、エラー解決のために少しググって、よくわからないまま
char* pStr = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi("Hello" + "World").ToPointer();
のようにして、
func1(pStr); //呼び出し成功
しました。
この場合、
func1("Hello" + "World");
を実行可能に出来るようにc++ライブラリ側で、この引数を受けられるfunc1関数を定義することは可能でしょうか?
c++プロジェクトでライブラリを作成して
void func1(const char *p){
cout << p << endl;
}
を定義して、
c++/cliプロジェクトでこの関数を呼び出すと、
func1("Hello World"); //呼び出し成功
func1("Hello" + "World"); //型 "System::String ^" の引数は型 "const char *" のパラメーターと互換性がありません
となったので、エラー解決のために少しググって、よくわからないまま
char* pStr = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi("Hello" + "World").ToPointer();
のようにして、
func1(pStr); //呼び出し成功
しました。
この場合、
func1("Hello" + "World");
を実行可能に出来るようにc++ライブラリ側で、この引数を受けられるfunc1関数を定義することは可能でしょうか?
839デフォルトの名無しさん
2014/05/26(月) 05:33:40.37ID:TbdBw+Sj 無理
840デフォルトの名無しさん
2014/05/26(月) 09:14:28.60ID:l0k3Jdk0841デフォルトの名無しさん
2014/05/26(月) 09:35:16.69ID:QBzBPwJ7 System::String^はネイティブでは直接扱えないから
842デフォルトの名無しさん
2014/05/26(月) 09:42:14.96ID:l0k3Jdk0 >>841
なるほど。ありがとうございました。
なるほど。ありがとうございました。
843デフォルトの名無しさん
2014/06/16(月) 00:28:31.77ID:KzXlrctf c#で書かれたdllを呼び出すc++/cliのラッパー
static libを作り、それを呼び出すc++のコードを
書けば、c++でc#のdllを呼び出す事が出来ますか?
static libを作り、それを呼び出すc++のコードを
書けば、c++でc#のdllを呼び出す事が出来ますか?
844デフォルトの名無しさん
2014/06/16(月) 03:18:12.95ID:TImdW3D8 出来るよ。リンク時に/MDオプションを使う必要はあったと思うけど。
845デフォルトの名無しさん
2014/06/16(月) 11:06:40.38ID:KzXlrctf846デフォルトの名無しさん
2014/06/20(金) 23:37:50.80ID:oekTSRl4 std::regexで"["や"]"などの文字を扱うにはどう書けばいいですか?
たとえばテキスト中に"[43]"などの[]で囲まれた数字があるかどうか知りたいのですが。
たとえばテキスト中に"[43]"などの[]で囲まれた数字があるかどうか知りたいのですが。
847765
2014/06/21(土) 16:55:19.23ID:BNLCZco1 久しぶりにVS開いたらWinFormが消えとる。もう捨てられるのか
>>845
これか
http://code.msdn.microsoft.com/windowsdesktop/CppHostCLR-e6581ee0
>>846
\でエスケープします
regex r("\[43\]");
>>845
これか
http://code.msdn.microsoft.com/windowsdesktop/CppHostCLR-e6581ee0
>>846
\でエスケープします
regex r("\[43\]");
848デフォルトの名無しさん
2014/06/21(土) 16:56:33.36ID:BNLCZco1 regex r("\\[43\\]");
こうか
こうか
849デフォルトの名無しさん
2014/06/25(水) 18:40:03.79ID:a/L3Ky6p こんどCLI+API+STLで久々に開発するぜ
まともにWindowsアプリ作るの15年ぶりだぜ
まともにWindowsアプリ作るの15年ぶりだぜ
850デフォルトの名無しさん
2014/06/25(水) 18:40:43.32ID:jtRedncf ご愁傷様
851デフォルトの名無しさん
2014/06/25(水) 19:43:48.20ID:a/L3Ky6p なんでご愁傷様?
852デフォルトの名無しさん
2014/06/29(日) 15:12:56.12ID:74KQZ/Pg WebBrowser::ActiveXInstanceのようなCOMポインターをObject^で返したいんですが
どう書いたらいいんでしょうか
Object^ get()
{
IUnknown* pU; //これを返したい
...
}
C#だと全部属性でやってて生ポインタをどう処理するかの参考にならないです。
どう書いたらいいんでしょうか
Object^ get()
{
IUnknown* pU; //これを返したい
...
}
C#だと全部属性でやってて生ポインタをどう処理するかの参考にならないです。
853デフォルトの名無しさん
2014/06/30(月) 07:13:06.08ID:AE59suyp それを返した先でどうするのさ
例えばIntPtrを返しても一応Object^にはなるけど多分そういう事じゃないよね?
例えばIntPtrを返しても一応Object^にはなるけど多分そういう事じゃないよね?
854デフォルトの名無しさん
2014/06/30(月) 08:29:40.70ID:k6aB52Mb Object^o=Marshal::GetTypedObjectForIUnknown(IntPtr(pU),Object::typeid);
とりあえずこうしました
addref,releaseが同じにならないといやだけど
とりあえずこうしました
addref,releaseが同じにならないといやだけど
855デフォルトの名無しさん
2014/07/30(水) 21:04:47.45ID:4VkY0HvI C++/CLI超楽しい
.Net、WinAPI、STL、Boost混在できて使いたい放題だし
何でみんな毛嫌いするの?
.Net、WinAPI、STL、Boost混在できて使いたい放題だし
何でみんな毛嫌いするの?
856デフォルトの名無しさん
2014/07/30(水) 22:46:45.65ID:310IZqCv C++とは似て異なるから
857デフォルトの名無しさん
2014/07/30(水) 23:48:31.72ID:QJA3s1XV 最初から別言語だと思っとけばいいじゃん。
俺もC++/CLIは面白いと思うが、先がなさそうなのが残念だな。
WPFが使えるようになったらMFCのアプリを移行したいと思っていたんだが。
俺もC++/CLIは面白いと思うが、先がなさそうなのが残念だな。
WPFが使えるようになったらMFCのアプリを移行したいと思っていたんだが。
858デフォルトの名無しさん
2014/07/31(木) 13:36:46.98ID:N7h43RT+ やりたい放題というのは1人でやってるだけなら楽しいが
足を引っ張る仲間がいると地獄巡り満腹コースになる
足を引っ張る仲間がいると地獄巡り満腹コースになる
859デフォルトの名無しさん
2014/07/31(木) 20:54:03.92ID:Ng6XWAlf マネージ関数の中でlambda使えないとか、最近は混ざる利点みたいなものが少なく…。
860デフォルトの名無しさん
2014/08/05(火) 16:06:10.29ID:8/O3Z/TB genericとtemplate混ぜたら楽しいと思ってたけど、
あんまり混ざらないようにできてる・・
あんまり混ざらないようにできてる・・
861デフォルトの名無しさん
2014/08/05(火) 21:42:31.92ID:a3vuC94X variadic template使って型パラメータの数が違うgeneric classを使えるかと思ったら、なんかエラーになるしね。
862デフォルトの名無しさん
2014/08/06(水) 12:55:33.48ID:YJYkBYpf genericクラスの中にtemplateは作れないし
その逆もできない。
できるのは、genericクラスをtemplateで
継承するくらい。
>>861 variadic genericあったらいいなぁ
その逆もできない。
できるのは、genericクラスをtemplateで
継承するくらい。
>>861 variadic genericあったらいいなぁ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 青森 緊急地震速報 [ぐれ★]
- 【速報】衆院議員定数削減法案、自民・維新が今国会成立見送りで調整 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★2 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★5 [Hitzeschleier★]
- 地蔵 [268244553]
- 地震だぁぁぁあ
- 小野田紀美「今年の漢字は『推』!、推しが総理になりまして。推し活をした1年だったなあと」 [256556981]
- 街で見かける謎のシールあるじゃん?
- ぢしん [856698234]
- 【悲報】ネトウヨの次のターゲット「渡邊渚」に決まるwwwwwwwwwwwwwwwwwwwww [455031798]
