問題タブ [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.
.net - .NET アセンブリが NTVDM からロードされない
NTVDM内で実行されている DOS プログラムによってロードされる VDD dll があります。この dll は C++/CLI を使用し、.NET アセンブリを参照します。
全体として、読み込みプロセスは次のようになります。
、およびファイルはすべて同じフォルダーにありますprntsr.com
。prnvdd.dll
prnlib.dll
ただし、ロード時に次の例外が発生します。
アセンブリのみを検索C:\WINDOWS\system32\
します。これは NTVDM.EXE が原因だと思います。これは、アセンブリが読み込まれる実際のプロセスであるため、その場所を AppBase として取得します。
AppBase を変更する方法や、この問題を回避する方法はありますか?
visual-studio - C ++ /CLIWinFormsプロジェクトへの既存のフォームの追加
別々のソリューションに2つのC++/CLIプロジェクトAとBがあります。実験/テストにAを使用し、テストが終了したら、テストしたコードをBに移動します。ただし、プロジェクトBにWindowsフォームクラス(ヘッダー、cpp、およびresx)を追加すると、IDEのビジュアルフォームデザイナーを使用できなくなります。どうすればそれを有効にできますか?
visual-studio - Visual C++ を使用して 2 次元配列をファイルに書き込み、ファイルから 2 次元配列を読み取る
私はC++の初心者です.680x680の2次元配列を作成しました.そして、それをtxtファイルに書き込もうとしました.残念ながら、その次元に沿って2次元配列を定期的に書くことはできません. また、txt ファイルから 2 次元配列を読みたいと思っています。コードは以下のとおりです。
よろしくお願いします...
c# - C# から C++/CLI から C DLL System.IO.FileNotFoundException
System.IO.FileNotFoundException: The specified module could not be found
C++/CLI アセンブリを呼び出す C# コードを実行すると、純粋な C DLL が呼び出されます。これは、純粋な C DLL 関数を呼び出すオブジェクトがインスタンス化されるとすぐに発生します。
BackingStore は純粋な C です。CPPDemoViewModel は、BackingStore への参照を持つ BackingStore を呼び出す C++/CLI です。
CPPDemoViewModel で定義されたオブジェクトを作成するだけの新しい C# 単体テスト プロジェクトを追加します。C# プロジェクトから CPPDemoViewModel への参照を追加しました。
C++/CLI テスト プロジェクトは、CPPDemoViewModel に ref を追加するだけで問題なく動作するため、言語間を行き来することになります。
.Net 3.5 SP1 で Visual Studio 2008 SP1 を使用しています。Vista x64 でビルドしていますが、プラットフォーム ターゲットが x86 に設定されていることを確認するように注意しています。
これは私が見逃している愚かで明白な何かのように感じますが、私的に解決しようとして時間を無駄にするのはもっと愚かなので、恥ずかしい思いをしてここにいます!
これは、C++/CLI で実装された ViewModel を使用して DLL に保持している膨大な量のレガシー C コードを移植するプロジェクトのテストです。
edit ディレクトリを確認したところ、BackingStore.dll がコピーされていないことが確認できました。
典型的なマルチプロジェクト ソリューションで作成された標準の一意のプロジェクト フォルダーがあります。
驚いたことに、上位レベルの Debug は、C および C++/CLI プロジェクトで使用される共通のフォルダーのようです。
WPFViewModelInCPP\Debug には、BackingStore.dll、CPPDemoViewModel.dll、CPPViewModelTest.dll、およびそれらに関連付けられた .ilk および .pdb ファイルが含まれています。
WPFViewModelInCPP\CPPViewModelTestInCS\bin\Debug には CPPDemoViewModel と CPPViewModelTestInCS の .dll と .pdb ファイルが含まれていますが、BackingStore は含まれていません。ただし、BackingStore をそのディレクトリに手動でコピーしても、エラーは修正されませんでした。
CPPDemoViewModel にはプロパティCopy Localセットがあり、参照された場合にその DLL をコピーする責任があると思います。C# プロジェクトからピュア C DLLへの参照を追加できません。「バッキング ストアへの参照を追加できませんでした」と表示されるだけです。
問題が 1 つだけなのか 2 つなのかわかりません。
古い形式のコピー ビルド ステップを使用して、BackingStore.dll を特定の C# プロジェクトのディレクトリにコピーできますが、新しい .net モデルではそれが必要ないことを願っていました。
DependencyWalker は、欠落しているファイルが GPSVC.dll であり、セキュリティ設定の問題を示していると示唆しています。これはニシンだと思います。
edit2 BackingStore.dll の手動コピーを実行可能ファイルに隣接させることで、GUI が正常に動作するようになりました。C# テスト プロジェクトには、テスト プロジェクトの実行環境が原因であると思われる問題がまだ残っていますが、今のところ、それがなくても問題ありません。
c++-cli - Array::FindAll() で Predicate を使用した C++/CLI Delegate 呼び出しのコンパイル エラー
次のコードは、C3867 (...関数呼び出しに引数リストがありません...) および C3350 (...デリゲート コンストラクターは 2 つの引数を予期しています...) になります。私は何を間違っていますか?
winforms - Visual Studio C++/CLI Winforms プロジェクトでデザイナーが生成したコード
C++/CLI プロジェクトの Windows フォーム デザイナーは、ヘッダー ファイル自体にすべてのイベント ハンドラーの宣言と定義の両方を生成します。それが生成する .cpp は、生成されたヘッダーと stdafx.h を単にインクルードする単なるスタブです。すべてのクラス メソッドの実装 (つまり定義) を、それらが正当に属する .cpp に移動すれば、コンパイル時間を短縮できると思います。これは、ヘッダーが複数の場所に #include されている場合に特に重要になります。
コードを個別の宣言 (.h) ファイルと定義 (.cpp) ファイルに分割することの欠点や副作用はありますか? 提案?ベストプラクティス?
c# - C# で C++ CLI テンプレート クラスを使用する
C++/CLI に次のクラスがあり、int プリミティブの明示的なテンプレートのインスタンス化があります。
これをコンパイルし、リフレクターを使用して生成されたアセンブリを検査すると、呼び出されたクラスを確認できますNumber<int>
が、C# でこの同じクラスをインスタンス化しようとすると、コンパイラーは一部のSystem::Number
クラスがテンプレート引数を取らないと文句を言います。私は何を間違っていますか?これはまったくできますか?
c++-cli - C++/CLI を使用したマクロのオフセット
C++/CLI では、offsetof マクロが機能しないようです。
これは、アンマネージ C++ では問題なく動作しますが、CLI では「エラー C2275: 'エンティティ' : この型を式として不正に使用しています」というエラーがスローされます。
CLI には代替品がありますか?
c++-cli - C++/CLI: IList と IList の実装(デフォルトのインデクサーの明示的な実装)
IList
と の両方を実装する C++/CLI クラスを実装しようとしていますIList<T>
。
名前が重複しているため、そのうちの 1 つを明示的に実装する必要があり、当然の選択として IList を選択する必要があります。
インデクサーの暗黙的な実装は次のとおりです。
現在、IList の既定のインデクサーを宣言しようとしています。
私の推測では、次のようになります。
しかし、それは私に与えます
エラー C2061: 構文エラー: 識別子 'デフォルト'
ヒントはありますか?