none
Windowsフォームアプリケーション作成時のエラーについて RRS feed

  • 質問

  • Visual C++の初心者です。
    勉強したいと思い、Visual C++ 2008 Express Editionをインストールしたのですが、
    Windowsフォームアプリケーションを新規作成する際に、
    下記のエラーが表示されてしまいます。

    OS環境はWindows Vistaです。
    対処方法を教えていただけないでしょうか。
     
    なお、インストール後にすべての新規プロジェクトの作成ができなかったため、
    Web(http://blog.bitmeister.jp/?p=497​ )を参照し、
    CLRコンソールアプリケーションは 普通に新規作成できるようになりましたが、
    上記URLで紹介のDLLの導入が逆にフォームアプリケーションに
    影響するなどということはあるのでしょうか。

    よろしくお願いいたします。


    【エラー内容】

    フォームアプリケーション作成時

    データが失なわれる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。  
    クラス文字列が無効です (HRESULT からの例外: 0x800401F3 (CO_E_CLASSSTRING))     
    このエラーのインスタンス (1) 
    場所 Microsoft.VisualStudio.Designer.Interfaces.IVSMDCodeDomProvider.get_CodeDomProvider()
    場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_Provider()
    場所 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
    場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.
        PerformLoad(IDesignerSerializationManager serializationManager)
    場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.
        DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload) 

    • 編集済み TMDC 2009年8月27日 14:21
    2009年8月27日 12:17

すべての返信

  • Visual C++の勉強をしたいから、Visual C++ 2008 Express Editionをインストールしたと言うところで
    ちょっと気になりましたので確認を。

    Visual C++ 2008 Express Editionでは、MFCを使ったGUIアプリの開発は出来ませんから
    選択肢はC++/CLIを使用するか、Win32APIで組むかという事になると思います。
    C++言語の勉強をする為にWin32 コンソールアプリケーションを使う分には問題ないと思いますが、
    C++言語を使ったGUIアプリの開発を勉強したいのであれば、Visual C++ 2008 Express Editionは
    向いていないかなと思います。
    C++/CLIは、実際にはC++言語とは別物のMicroSoftが独自に作成した言語なので
    実際にC++言語で組むときとは違った文法が出てきます。
    なのでC++言語で組みたいとなるとMFCを使う方向になると思うのですが、
    Visual C++ 2008 Express EditionはMFCによるGUIアプリケーションの開発をサポートしていません。
    以上のことを踏まえた上でVisual C++ 2008 Express EditionでC++/CLIでGUIアプリケーションの
    開発を勉強したいと言う話であれば問題ないのですが、そうでは無いのであればExpressEditionを使用する事
    その物について考え直した方が良いかもしれません。

    ちなみにですが、C++/CLIとしての入門書も出ていますので確認してみると良いと思います。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年8月28日 5:04
  • PATIO さん

    ご返信ありがとうございます。

    いままでVBを使用していました。
    VBで十分と言えば十分なのすが、
    C++を使用できたらおもしろいかな・・・と思い挑戦を始めたところです。
    「MFC」というクラスはあまり理解できていないのですが、やはりGUIソフトを作ることを目標にしています。

    PAITOさんのおっしゃるように、
    Visual C++ 2008 Express Editionで制約があることはある程度確認していました。

    C++の構成が把握した後、有料のVisual Studioを入れるかを検討しようと思っていたところで、
    Visual C++ 2008 Express Editionでプログラム作成以前のエラーが出てしまったため、
    「有料のVisual Studioも同じエラーが発生するのでは・・・」と足踏みしてしまっています。

    エラー自体の回避についてお分かりになる方はいらっしゃいませんでしょうか。
    2009年8月28日 12:29
  • どーも、PATIOです。

    C++言語の知識が全くないのでしたら、いきなりGUIプログラムを書くのではなくて
    C++言語の勉強をまずする所から始める事をお勧めします。
    実際の話、文法が分かっていないとプログラミング自体無理だと思います。
    (単純なコーディングパターンで覚えるようなコードなら書けるかもしれませんが、
    実際に実践的なコードを書く為には文法を理解した上でコードの内容を把握して
    おく事が必要になります。文法が分からないのでは、これは無理です。)

    さて、Microsoft Visual Studio Team System 2008 Development Editionを使っていますが、
    今のところ、そういった問題にはぶつかっていません。
    また、製品版であれば購入した時点で正式なユーザーなので明らかにおかしい場合のサポートは
    Microsoftでも行ってくれます。
    そういう意味では、「有料のVisual Studioも同じエラーが発生するのでは・・・」を心配する必要は無いのでは?
    と思いますよ。

    あいにく私の環境からでは、提示されたブログの参照が出来ないのでブログの内容が見られません。
    なので、どういう内容が書いているのかまで確認できていません。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年8月31日 5:47
  • connectとか眺めるとそれなりに出てきますね。
    (当然つくべき)COMレジストリの読み取り権限が、なぜか外れてインストールされる不具合のようで。
    修正策、というのも、プロジェクトウイザード関連のCOMエントリに読み取り権限を追加する話で、そこの部分は解決しているのですから、
    他にもCOM関係の、読み込み権限を追加するべき箇所があるのではないかと。

    jzkey
    2009年8月31日 10:48
  • jzkey さん

    ありがとうございます。
    現在、教えていただいたURLの内容を確認しています。
    すごいですね、英文のURLから適切な内容を選び出せるスキルがうらやましいです。
    jzkeyさんに教えていただいたURLのうち、
    2つ目のURLの投稿者Telemetryさんとまさに同じ状況に置かれています。

    どのURLを確認しても下記レジストリがキーにはなっているようですが、解決には至りません。
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VsWizard.VsWizardEngine.9.0
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VsWizard.WizCombo.9.0

    レジストリをいじりながら、いろいろ試していますので、もう少しこのまま置かせてください。
    併せて、ほかにお分かりになる方がいましたら、ぜひアドバイスをお願いいたします。
    2009年8月31日 14:54
  • どのURLを確認しても下記レジストリがキーにはなっているようですが、解決には至りません。
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VsWizard.VsWizardEngine.9.0
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VsWizard.WizCombo.9.0

    レジストリをいじりながら、いろいろ試していますので、もう少しこのまま置かせてください。
    併せて、ほかにお分かりになる方がいましたら、ぜひアドバイスをお願いいたします。
    気になったので一言だけ。
    レジストリを弄っていると言うお話ですが、どういう操作をされているのでしょう?
    リンク先にある

    regsvr32 C:\[Visual Studio installation dir]\Common7\IDE\VsWizard.dll

    で多分登録はされるのではないかと思うのですけれど。
    それともこの方法ではうまく行かないのでしょうか?

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年9月1日 9:18
  • regsvr32 C:\[Visual Studio installation dir]\Common7\IDE\VsWizard.dll

    で多分登録はされるのではないかと思うのですけれど。
    念のために補足しておきます。
    このコマンドを実行するためには、コマンドプロンプトを 管理者として実行 して下さい。
    スタートメニューから コマンド プロンプト の項目を探し、その項目を右クリックすると表示されるメニューから実行できます。

    管理者として実行していない場合、regsvr32 は失敗します。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月1日 14:35
    モデレータ
  • PAITOさん、Azuleanさん

    ご指摘、ありがとうございます。
    VsWizard.dll」の登録は成功しています。

    細かく説明しますと、
    ①最初、VC++ 2008 Express Editionをインストールした際、
     フォームアプリケーションはおろか、コンソールアプリケーションの新規作成もできませんでした。
     VC++2008画面左下に、たしか「プロジェクトXXXXXXの作成に失敗しました」といったようなエラーメッセージが出て、
     何一つその先に進めることができない状態でした。

    ②そのためURL(http://blog.bitmeister.jp/?p=497​ )を参照し、
     「regsvr32 C:\[Visual Studio installation dir]\Common7\IDE\VsWizard.dll」を実行しました。
     管理者権限下でコマンドプロンプトを開き実行、それそのものはうまくいきました。

    ③再度VC++2008にて、プロジェクトの新規作成を試みたところ、
      コンソールアプリケーションについては問題なく、作成できるようになりました。
      しかし、フォームアプリケーションの作成しようとすると、必ずエラーが発生します。
      そのエラー内容はこの質問の投稿時に記載させていただいた内容です。



      説明が足りなかったかもしれないため、現状を正しく説明させていたたきますと、、、

      フォームアプリケーションの作成を行うと、ファイル構成はそのまま作成されます。
      クラスビューにも「Form1」が作成されます。
       しかし、上記のエラーが発生し、カンジンなFormデザインの画面が出てこない状況です。

      改めて考えてみると、まったく別の問題として考えなければいけないのかもしれません。

    2009年9月2日 5:06
  • ダメモトで、これの一番下を試してみるとか。

     デザイン画面でコントロールが表示されなくなる
     http://social.msdn.microsoft.com/Forums/ja-JP/vsfeedbackja/thread/02fbd2d4-4412-43e4-a364-e7751504133f
    2009年9月2日 6:20