dポイントプレゼントキャンペーン実施中!

VB6.0からVB2010へのプログラムの書き換えをしています。
「アセンブリ 'Microsoft.Vbe.Interop.Forms' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。」などの警告が3件出ました。
他の2つは参照名が"Interop.MSComDlg"と"Microsoft.Vbe.Interop.Forms"で警告文の文面は同じです。
そこで、参照で対応する参照名のプロパティの埋め込みを変えると、今度は「クラス 'AxFrame' への参照は、そのアセンブリが No-PIA モードを使用してリンクされている場合には許可されません。」というエラーと「相互運用機能型 'AxFrame' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。」という2つのエラーが出ます。
どのように、すればエラーを解消できるでしょうか。
宜しくお願いします。

A 回答 (3件)

.NET 用に書き換えるのですから "Microsoft.Vbe.Interop.Form" とか "stdole" とか "MSComDlg" とかやってる時点でダメでしょう。


これらの機能を使って作られていた VB 6.0 のプロジェクトを .NET の機能に置き換えて移植するのが基本です。
まずは VB.NET で使用できる標準コントロールだけで実現させるよう努力してください。

この回答への補足

どうもありがとうございます。
いろいろやって、エラーの表示を回避することができました。

しかし、そのプログラムを実行すると、g.drawstring(...)のところで「GDI+ で汎用エラーが発生しました。」の表示が出て、止まってしまいます。
これもまだ同様の原因によるのでしょうか?

補足日時:2010/12/15 18:00
    • good
    • 0

そのVB6のアプリで使っているのってMSFORMS2.0のコントロールですか?


VB6標準のコントロールで置き換えは不可能なのでしょうか ・・・

MSFORMS2.0のコントロールを排除した状態にしてコンバートしてみてはいかがでしょう
もっとも VB6の開発環境がないのではどうしようもありませんが ・・・

この回答への補足

どうもありがとうございます。
Windows XPでVB6を使っていたのですが、パソコンがだめになり、Windows 7のパソコンに買い換えました。Windows 7ではVB6をインストールすることができず、VB2010に変えることにしました。
それで、VB6のプログラムをVB2010で作り直しはじめたのですが、質問のような問題が起きました。

補足日時:2010/12/15 08:15
    • good
    • 0

VB 6.0 のプロジェクトを、それ以降のバージョンの Visual Studio で自動的に移植するのはやめたほうがいいです。


成功した例を聞いたことがありません。
設計書やソースコードを基にゼロから作り直すべきです。

この回答への補足

どうもありがとうございます。
ソースコードをもとに新たに作り直したのですが、質問したようなエラーが出て困っています。

補足日時:2010/12/14 15:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!