問題タブ [c++-cli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - Visual-C++ で「配列」が予約語としてマークされているのはなぜですか?
Visual Studio の構文の強調表示では、この単語がキーワードまたは予約語であるかのように青く色付けされます。私はそれをオンラインで検索しようとしましたが、「配列」という単語は検索を無効にします。配列とは何かを説明するページがほとんどです。それは何のために使用されますか?
c# - C++/CLI を「ミドルウェア」として使用して、ネイティブ C++ から .NET クラスを使用する
ネイティブ C++ アプリケーションから C# .NET で作成されたクラス/アセンブリを使用する必要があります。C++/CLI でラッパー クラスを作成する必要があると思います。これは、ヘッダー ファイルでネイティブ メソッドを公開しますが、必要に応じて .NET クラスを使用します。私には不明なことは、データ型を .NET から標準の C++ 型に変換する方法です。
学ぶためのサンプルコードを持っている人はいますか?
これで見つけた唯一のテキストは次のとおりです。 http://msdn.microsoft.com/en-us/magazine/cc300632.aspx
しかし、テキストは非常に古く (C++/CLI ではなくマネージド C++ を使用)、多くのことが不明なままです。
c# - 厳密な名前の検証に失敗しました
2 台のマシン。.NET 3.5 と VS 2008 VC++ SP1 再頒布可能パッケージの両方
C++/CLI と C# の 2 つの署名付き DLL を使用する単一の exe ファイル
1 台のマシンで exe が読み込まれ、正常に実行されます。
一方、C++ 実行可能ファイル (HRESULT 0x8013141A) で「厳密な名前の検証に失敗しました」というメッセージが表示されます。
何か案は?
.net - modoptおよび.NETリフレクション
.NETReflectionを介して調べたいCLI/C++インターフェイスがあります。ソースコードの関数シグネチャは次のとおりです。
.NETReflectorで調べたときの関数は次のようになります。
.NETリフレクションを介してmodopt属性を取得する方法はありますか、それともメタデータアンマネージAPIを使用する必要がありますか?
.net - InternalsVisibleToはマネージC++では機能しません
InternalsVisibleToは、マネージC ++プロジェクトでは機能しませんが、C#プロジェクトでは機能します。どんな助けでもいただければ幸いです。これが簡略化されたレイアウトです。
プロジェクトA -C#には、 B/Cからアクセスしたい内部プロパティがあります。
プロジェクトB-マネージC++。参照A。 _
プロジェクトC -C#、参照 A。
すべてのプロジェクトは同じキーで署名されています。ILDASMまたはReflectorを使用してコンパイルされたアセンブリを見ると、それらがすべて正しく署名されていることがわかります(内部プロパティの使用法をコメントアウトした場合)。
プロジェクトAのAssemblyInfo.csには、次のInternalsVisibleToがあります。
キーはカットアンドペーストされているので、正しいことがわかります。
コンパイルしようとすると、AとCは正常にコンパイルされますが、プロジェクトBは次のように失敗します。
MSDNのドキュメントによると、これはC++で機能します。バグや他にやらなければならないことがありますか?
私が署名したアセンブリでのみ使用できるようにプロパティを保護する別の方法はありますか?すべてのアセンブリを保護できることはわかっていますが、このようにきめ細かいレベルで保護できますか?
編集
MSDNのコメントに基づいて、属性を次のように変更しましたが、それでも機能しません。
c# - ネイティブ クラスが .NET イベントを使用することは可能ですか?
「混合」クラスインスタンスからメソッドを指す.NETデリゲートを初期化する方法はありますか?
次のようにC++クラスを「混合」しました:
DotNetClassはC#で実装、メソッド宣言はデリゲートでOK。この行はエラーを生成します:
誰でも問題についての手がかりを持っていますか? CppMixClass クラスは純粋な .NET (ref) クラスではないのでしょうか?
UpdateHealthState が静的メソッドの場合にこれを機能させましたが、インスタンス メソッドへのポインターが必要です。
私は次のように試してみました:
しかし、これは明らかに機能しません。これは、.NET (ref) クラス (System::Object) へのポインター (ハンドル) ではないためです。
ServiceStateEventHandler は C# で次のように定義されています。
これを読んでくれてありがとう:)
events - C++/CLI からイベントを発生させる適切な方法は?
C++/CLI からイベントを発生させる適切な方法は何だろうと思っていました。C# では、最初にハンドラーのコピーを作成し、それが null でないかどうかを確認してから、それを呼び出す必要があります。C++/CLI にも同様の方法はありますか?
c++-cli - C++/CLI でハンドルをどのように扱いますか?
私はこれを正しく尋ねていないことも知っています。私の質問をより良くするのを手伝ってください。
ハンドルについて理解するのに少し苦労しています。ある意味では、ハンドルのように見えます。しかし、ポインターとは異なり、ハンドル変数に値を直接割り当てることができるようで、ハンドル自体ではなく、基になるデータ値に影響を与えます。
テスト コードは、ハンドルを使用しても、ハンドルを「逆参照」してデータを取得しても、同じ値が得られることを明確に示しています。明らかに、これはアンマネージ ポインターでは機能しません。私は何を理解していませんか?
追加する編集 - WirteLine が逆参照を行ったのではないかと思いましたが、静的キャストが long にならないことを期待していました。これは自動ボックス化解除にも関連していますか?
c++ - Silverlight と C++ または C++ から C# への進行中のコード変換は?
私は、iPhone、デスクトップ OS/X、Windows タブレット、Silveright ベースのブラウザー、Windows Mobile、および Windows のバージョンをこの優先順位で作成したい、描画ベースの製品に取り組んでいます。
GUI の移植性については、コアを C++ のままにして、Cocoa/Objective-C または WPF/C# の薄いレイヤーを使用するというのが古典的な答えです。
ただし、Silverlight では選択が複雑になります。
コードを C++/CLI に移行し、デュアル コード ベースを維持することに問題はありません (C++/CLI のコンテキスト キーワードを偽装するマクロと、^ と % の司法的な検索と置換を使用)。
これまでのところ、C++/CLI が Silverlight でサポートされる可能性は低いと思われます。それは私にオプションを残します:
- v1.0 C++ ソース ベースの C# への 1 回限りの移行と継続的な並行メンテナンス
- C++ から C# へ、またはその逆のツールを使用したライブ ポーティング (推奨をお願いします!) は、ビルド プロセスの一部として十分にスムーズです。
- C++ ロジックがサーバー上に残るように、Silverlight バージョンのアーキテクチャ上の分離。パフォーマンスへの影響については少し不快です。
代替案を提案したり、Silverlight での C++/CLI に関する良いニュースを提供したり、移植ツールを推奨したりできる人はいますか? ポートが信頼できるものであれば、バックエンドのメイン言語として C++ または C# を使用できるほど、どちらの言語にも慣れています。
編集: Tangible Software Solutionsが提供する製品の範囲を見ると、コンバーターに関する彼らのメモは、C# から C++ への変換が他の方法よりも簡単であることを明確にしています。これは私が予想した通りです。私の C++ スタイルを最も一般的でない OO 分母に制限することに関して、興味深い考えが浮かび上がります。