C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 32ビットから64ビットへのアプリ移行と実行エラーについて


(過去ログ 131 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■77602 / inTopicNo.1)  32ビットから64ビットへのアプリ移行と実行エラーについて
  
□投稿者/ S.H (1回)-(2015/11/07(Sat) 14:39:09)

分類:[VB.NET/VB2005 以降] 

はじめまして。以前動作していた32ビット版のオリジナルアプリは64ビットで動作しなくなり、64ビット環境で実行したく、
Any CPUでビルド成功後に実行すると下記のようなエラーメッセージが表示されました。

型 'System.InvalidOperationException' のハンドルされていない例外が アプリ名.exe で発生しました

追加情報:フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。
エラー:CLSID {2AB1774D-0C41-11D7-916F-0003479BEB3F} を含むコンポーネントの COM クラス ファクトリを取得中に、
次のエラーが発生しました: 80040154 クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))。

<旧環境>
WINDOWS7 Home 32Bit
Microsoft Visual Studio 2010 Express
<言語>
Visual Basic 2010
.NET Framework 3.5

<新環境>
WINDOWS 10 Home 64Bit
Microsoft Visual Studio Express 2013 for Windows Desktop
<言語>
Visual Basic 2013
.NET Framework 4.5

どのように対応していいのかわからず悩んでおります。
ご教授いただけますようよろしくお願いいたします。

引用返信 編集キー/
■77604 / inTopicNo.2)  Re[1]: 32ビットから64ビットへのアプリ移行と実行エラーについて
□投稿者/ WebSurfer (698回)-(2015/11/07(Sat) 14:51:22)
No77602 (S.H さん) に返信

以下の記事に一通り目を通すことをお勧めします。

Part 1. 64 ビット Windows OS の基本知識
http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx

Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx


推測ですが、Part 2 の Step 9 の下の方の図の「例 3」のようになっているので
はないかと思います。もしそうであれば、「例 4」のようにする(プラットフォーム
ターゲットを Any CPU でなくて x86 にする)ことで解決できるのではないかと思い
ます。

引用返信 編集キー/
■77605 / inTopicNo.3)  Re[2]: 32ビットから64ビットへのアプリ移行と実行エラーについて
□投稿者/ S.H (3回)-(2015/11/07(Sat) 16:36:26)
No77604 (WebSurfer さん) に返信
> ■No77602 (S.H さん) に返信
>
> 以下の記事に一通り目を通すことをお勧めします。
>
> Part 1. 64 ビット Windows OS の基本知識
> http://blogs.msdn.com/b/nakama/archive/2008/10/30/part-1-64-windows-os.aspx
>
> Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
> http://blogs.msdn.com/b/nakama/archive/2008/11/06/part-2-net-framework-2-0-64.aspx
>
>
> 推測ですが、Part 2 の Step 9 の下の方の図の「例 3」のようになっているので
> はないかと思います。もしそうであれば、「例 4」のようにする(プラットフォーム
> ターゲットを Any CPU でなくて x86 にする)ことで解決できるのではないかと思い
> ます。
>

早速のご回答ありがとうございます。
お貼りいただいたリンクページも一通り読みました。

このアプリはAccessのmdbファイルを読み込んで処理しています。記載漏れで申し訳ありません。
構成マネージャーでプラットホームをx86に変更してビルド成功後に実行すると別の例外エラーが出ました。

型 'System.InvalidCastException' の例外が アプリ名.exe で発生しましたが、ユーザー コード内ではハンドルされませんでした
追加情報:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'System.ComponentModel.ISupportInitialize' にキャストできません。
IID '{CF793A55-B9DD-30C2-A484-360AF143C228}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに
次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。

継続すると...

型 'System.InvalidOperationException' のハンドルされていない例外が アプリ名.exe で発生しました

追加情報:フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。 エラー:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'System.ComponentModel.ISupportInitialize' にキャストできません。IID '{CF793A55-B9DD-30C2-A484-360AF143C228}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。

とメッセージが表示されました。
その後、継続するとアプリは終了してしまいます。

どうも最初のメインフォームを表示するところで上記の例外エラーが出ているようです。
2010で作成したフォーム類は32ビットでしか動作できないものなのでしょうか。
それとも何か別の要因なのでしょうか。宜しくお願いいたします。

引用返信 編集キー/
■77606 / inTopicNo.4)  Re[3]: 32ビットから64ビットへのアプリ移行と実行エラーについて
□投稿者/ Azulean (534回)-(2015/11/07(Sat) 17:10:56)
No77605 (S.H さん) に返信
> このアプリはAccessのmdbファイルを読み込んで処理しています。
(略)
> 2010で作成したフォーム類は32ビットでしか動作できないものなのでしょうか。

違います。
あなたが 32bit でしか動かないもの(mdb を読み込むあたりでは?)を使っていることが要因で 32bit でしか動かないのです。

なお、上記の記事を読めばわかると思いますが、64bit Windows では「32bit プロセス」と「64bit プロセス」があります。
x86 で指定してビルドすることで「32bit プロセス」として動かすことができるので、それで当面は回避できる…かもしれません。


(参考)
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/278d115f-1ea6-4272-95bb-b4694347aa1b/64osmdb
引用返信 編集キー/
■77609 / inTopicNo.5)  Re[4]: 32ビットから64ビットへのアプリ移行と実行エラーについて
□投稿者/ S.H (4回)-(2015/11/08(Sun) 00:02:14)
No77606 (Azulean さん) に返信
> ■No77605 (S.H さん) に返信
>>このアプリはAccessのmdbファイルを読み込んで処理しています。
> (略)
>>2010で作成したフォーム類は32ビットでしか動作できないものなのでしょうか。
>
> 違います。
> あなたが 32bit でしか動かないもの(mdb を読み込むあたりでは?)を使っていることが要因で 32bit でしか動かないのです。
>
> なお、上記の記事を読めばわかると思いますが、64bit Windows では「32bit プロセス」と「64bit プロセス」があります。
> x86 で指定してビルドすることで「32bit プロセス」として動かすことができるので、それで当面は回避できる…かもしれません。
>
>
> (参考)
> https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/278d115f-1ea6-4272-95bb-b4694347aa1b/64osmdb

ご助言ありがとうございます。申し訳ありません。
新環境にMS Officeがないので肝心のODBCを入れていませんでした。
エラーは解消しましたが、また別の例外が出てしまいました。これは独自部品関連エラーの為、
一旦は解決とさせていただきます。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -