2

Visual Studio 2010 Ultimate で作業していますが、特定のコントロールを Windows フォームに追加する際に問題が発生しています。同じソリューションに PeakEstimator と PeakEstimatorUI の 2 つのプロジェクトがあります。PeakEstimatorUI (私の GUI) は PeakEstimator (私のバックエンド) に依存しており、現在持っているフォームとコントロールですべてが期待どおりにコンパイルおよび実行されます。

ただし、特定のコントロールを追加しようとすると、問題が発生します。TextBoxes、Buttons、Labels、OpenFileDialog コントロール、およびその他の多くの機能は正常に動作しますが、Chart、LineShape、OvalShape、ReportViewer、ElementHost などを追加しようとすると、次のエラーが発生します。

コンポーネント 'コンポーネント名' の作成に失敗しました。エラー メッセージは次のとおりです。(HRESULT からの例外: 0x8007000B)」

私は同様の問題を探していましたが、私が見たほとんどのスレッドは x86 と x64 の問題について話していますが、clr を使用するとそれらの問題を処理できるという印象を受けました。おそらく私はそこに根本的な誤解を持っています。

私が問題を抱えているすべてのコントロールは、新しい Windows フォーム プロジェクトを作成すると正常に動作するように見えるので、プロジェクトの構成と関係があるに違いないと思います。何か案は?

本格的な GUI を開発したり、Visual Studio を使用したりするのはこれが初めてであり、Windows でプログラミングを行うのは久しぶりなので、5 歳のように説明してください。

御時間ありがとうございます、

デイブ

4

2 に答える 2

1

通常、これは 32 ビット DLL を 64 ビット アプリケーションにロードしようとするとエラーになります。あなたの環境でそれは可能ですか?

外部依存関係があり、.DLL ファイルしかない場合は、Visual Studio コマンド プロンプトを使用して、それが 32 ビットかどうかを確認できますcorflags myReference.dll32BITあなたは旗を探しています。それが制御できるものである場合は、プロジェクト/ソリューションをチェックして、ビルド用に設定されているかどうかを確認してAnyCPUくださいx86(注: COM 相互運用を行う場合、または別の 32 ビット アセンブリを使用する場合は、x86 が必要になる場合があります)。

64 ビット マシンを使用していて、AnyCPU ビルド構成に設定されたソリューションがあり、その後 32 ビット アセンブリをロードしようとすると、この例外がスローされます。ソリューションを x86 用にビルドするように変更すると、問題が解決するはずです。

その他のリソース:

于 2012-10-11T19:59:06.390 に答える
0

申し訳ありませんが、私の最初の答えは C# でした。

C++ の場合は、/CLRIMAGETYPE を参照してください。これがどのように機能し、VS2010 で設定する場所を説明する MSDN は次のとおりです。

http://msdn.microsoft.com/en-us/library/31zwwc39(v=vs.100).aspx

そして、これがプロパティページのスクリーンショットです。どの値に変更すればよいかわかりませんが、試してみて、自分に合った値を確認してください。

ここに画像の説明を入力

于 2012-10-11T20:02:17.027 に答える