2012-03-07 125 views
1

私はC#でVisual Studio 2005でビルドされたプロジェクトを持っています。 Windowsアプリケーション用のインストーラを作成しました(VS2010).Windows XP SP3でも正常に動作します。私はWindows 7 32ビットでインストールしようとしましたが、インストールは成功したと言われますが、アプリケーションを開こうとするとこのエラーメッセージが表示されます。メモリロケーション(HRESULT:0x800703E6)への無効なアクセスのため、DLL VistaDb20.dllを読み込めません

致命的なエラーが発生しました。 DLL 'VistaDb20.dll'を読み込めません:無効な メモリの場所へのアクセス。 (HRESULTからの例外:0x800703E6)

モジュール "VistaDb20.dll" だった:私は、エラーメッセージが取得 ます。regsvr32 VistaDb20.dll

人々は、私は、コマンドラインでこれを実行する提案しましたエントリされたDllRegisterServerが見つからない場合、 エントリポイントが見つかりませんでした。 "VistaDb20.dll"が有効なDLLまたはOCX ファイルであることを確認してから、もう一度お試しください。

だから、私は、.NET Frameworkアセンブリ登録ユーティリティを使用します。regasm VistaDb20.dll /tlb:VistaDb20.tlbを試してみました2.0.50727.4927し、取得エラー:

ます。regasm:エラーRA0000:「VistaDb20の読み込みに失敗しました。 dll 'は有効な.NETアセンブリではないためです。

この.dll問題でWindows 7でアプリケーションを実行する方法がわかりません。どんな助けもありがとう。このアプリケーションとデータベースはVistaDB 2.1を使用して作成されました

実際のDLLは作成していないので変更できないと思いますが、Visual StudioでDLLのいくつかのプロパティを変更する必要がありますか?

+1

登録に必要なものはありません。 DLLコードがロードされたときにクラッシュしました。通常はDllMain()です。デバッガが必要です。 –

+0

ありがとうHans。デバッガを実行すると例外DllNotFoundExceptionがキャッチされます(メモリ位置への無効なアクセス)。 { nativeDatabase = new Vista2.VistaDB.VistaDBDatabase(connectionString、false、false); nativeDatabase.Connect(); } catch(例外e) – tennisbuddy

答えて

1

のregasmコマンドを使用して、私のVB .NETのアセンブリを登録しようとしながら、私はこのエラーが発生しました:

RegAsm : error RA0000 : Failed to load 'VistaDb20.dll' because it is not a valid .NET assembly.

私はこの問題は、右の.NET Frameworkます。regasmを実行買う解きます。

これは、高度なコンパイルオプション(VS2010)でターゲットとするのと同じフレームワークのツールを使用する必要があることを意味します。

+0

私のために働いた。 regasm.exe /?を実行します。 %windir%\ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe – Sprockincat

+0

thxこれは私の問題を解決します。%windir% \ Microsoft.NET \ Framework \ディレクトリ.net frw(assebmlyに基づいて使用されているものを使用)に基づいてユーティリティフォルダがあります>>同じ問題を抱えている可能性がある人のための少しの説明 – stenly

1

thisによると、このDLLはDEPと互換性がありません。これを回避するには、DEPを無効にする必要がありますが、長期的には、この特定の依存関係から離れるようにしてください。

+0

Davidに感謝します。このプログラムのDEPを無効にしようとすると、次のエラーが発生します。 このプログラムは、データ実行保護(DEP)を有効にして実行する必要があります。このプログラムのDEPを無効にすることはできません。 – tennisbuddy

+0

さて、DEPがそのDLLの問題の原因であるかどうかは確信できませんが、あなたのアプリがDEPを必要とし、DLLがDEPで動作しない場合、あなたは立ち往生しています。 DLLのベンダーは何を言っていますか? –

+0

私はこの問題に関するいくつかの記事を読んでいますが、これは32ビットアプリケーションであることを明確にしたいと思います。アプリケーションはProgram Filesディレクトリにあり、上記のようにアプリケーションはXPに準拠しています。また、デビッドが提供したリンクのPost-Buildイベントコマンドラインにすでにそのコードを追加していました。 – tennisbuddy

関連する問題