システムwiki

Excel64ビット-dbghelp-c/c++ comアドインは、loadlibraryメソッドで例外をスローします

LiviuCi 受付中 最終更新日:2022-03-18 02:00

みなさん、こんにちは

Office Excel 64BIT(現在のversionはOffice365 MSO 64BIT)で使用したいC++で開発されたcomアドインがあります.このcomでは、LoadLibraryを呼び出して、ビジネスロジックを含むライブラリをロードしています.

これを行うと、次の例外がデバッガーでスローされます:


4534:7058 @ 159255234-LdrpGetProcedureAddress-情報:プロシージャ「RtlInterlockedFlushSList」を名前で検索しています

4534:7058 @ 159255234-LdrpNameToOrdinal-警告:プロシージャ"SymSetDiaSession"がDLLのベース0x00007FFF56040000に見つかりませんでした.

4534:7058 @ 159255234-LdrpReportError-エラー:エクスポートの検索 "SymSetDiaSession"for DLL"C:\WINDOWS\SYSTEM32\dbgeng.dll"はステータス0xc0000139で失敗しました.

4534:7058 @ 159255234-LdrpGenericExceptionFilter-エラー:関数LdrpSnapModuleで例外0xc0000139が発生しました

例外レコード:.exr 00000076C64F9AB0

コンテキストレコード:.cxr 00000076C64F95C0

Excel.EXEの0x00007FFFB51BBEB8(ntdll.dll)で例外がスローされました:0xC0000139:エントリポイントが見つかりません.

'Excel.EXE'(Win32):アンロードされた'C:\Windows\System32\wsock32.dll'


DLLのロードプロセスで検索すると、dbgeng.dllから取得されますC:\WINDOWS\SYSTEM32:


4534:7058 @ 159255000-LdrpSearchPath-ENTER:DLL名:dbgeng.dll

4534:7058 @ 159255000-LdrpResolveDllName-ENTER:DLL名:C:\Program Files\Microsoft Office\root\Office16\dbgeng.dll

4534:7058 @ 159255000-LdrpResolveDllName-戻り値:ステータス:0xc0000135

4534:7058 @ 159255000-LdrpResolveDllName-ENTER:DLL名:C:\WINDOWS\SYSTEM32\dbgeng.dll

4534:7058 @ 159255000-LdrpResolveDllName-戻り値:ステータス:0x00000000

4534:7058 @ 159255000-LdrpSearchPath-戻り値:ステータス:0x00000000

4534:7058 @ 159255000-LdrpMinimalMapModule-ENTER:DLL名:C:\WINDOWS\SYSTEM32\dbgeng.dll

'Excel.EXE'(Win32):ロードされた'C:\Windows\System32\dbgeng.dll'.包含/除外設定によりシンボルのロードが無効になります.

4534:7058 @ 159255000-LdrpMinimalMapModule-戻り値:ステータス:0x00000000

4534:7058 @ 159255000-LdrpFindDllActivationContext-情報:DLLのマニフェストをプローブしています "C:\WINDOWS\SYSTEM32\dbgeng.dll"はステータス0xc000008aで失敗しました


dbghelp.dllから取得されますC:\Program Files\Microsoft Office\root\Office16:


4534:7058 @ 159255187-LdrpSearchPath-ENTER:DLL名:dbghelp.dll

4534:7058 @ 159255187-LdrpResolveDllName-ENTER:DLL名:C:\Program Files\Microsoft Office\root\Office16\dbghelp.dll

4534:7058 @ 159255187-LdrpResolveDllName-戻り値:ステータス:0x00000000

4534:7058 @ 159255187-LdrpSearchPath-戻り値:ステータス:0x00000000

4534:7058 @ 159255187-LdrpMinimalMapModule-ENTER:DLL名:C:\Program Files\Microsoft Office\root\Office16\dbghelp.dll

'Excel.EXE'(Win32):ロードされた'C:\Program Files\Microsoft Office\root\Office16\DBGHELP.DLL'.包含/除外設定によりシンボルのロードが無効になります.

4534:7058 @ 159255187-LdrpMinimalMapModule-戻り値:ステータス:0x00000000

4534:7058 @ 159255187-LdrpFindDllActivationContext-情報:DLLのマニフェストをプローブしています"C:\Program Files\Microsoft Office\root\Office16\dbghelp.dll"ステータス0xc000008bで失敗しました


これは、Excel.exeの検索パスが次のとおりであるためです.


4534:7058 @ 159254625-LdrpcomputeLazyDllPath-情報:DLL検索パスが計算されました:C:\Program Files\Microsoft Office\root\Office16;C:\WINDOWS\SYSTEM32;C:\WINDOWS\system;C:\WINDOWS;...


Officeインストールのdbghelp.dllversion部分に不一致があるようです(C:\Program Files\Microsoft Office\root\Office16\dbghelp.dll)およびシステムで使用されるもの(C:\Windows\system32\dbghelp.dll).後者には、が必要としているsymbolSymSetDiaSessionが含まれていますC:\WINDOWS\SYSTEM32\dbgeng.dllしかし、Officeversionはそうではありません.

これを修正する方法を教えてください.私が考えている解決策の1つは、Officeのインストールからdbghelp.dllを削除することですが、インストールフォルダーを変更できないため(管理者権限のため)、残念ながら仕事用アカウントのインストールでは削除できません.

ありがとうございます.

返信リスト(回答:2)

2 #
MayShiM

こんにちはLiviuCitu、

このコミュニティに投稿していただきありがとうございます.

申し訳ありませんが、この問題のデバッグ方法については専門家ではありません.私の調査によると、次の記事を参照して提案を試すことができます:

Officeアドインのテストとデバッグ-Officeアドイン| Microsoft Docs

この問題はC/c++ comアドインに関連しているため、誤った情報を共有しないように、 ExcelTechコミュニティ より良いヘルプのために.

お手数をおかけしますが、何卒よろしくお願い申し上げます.

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

5月

応答2# ->にスキップ
1 #
LiviuCi

こんにちは5月

ご回答有難うございます.問題は実際には私のアドインではなく、OfficeパッケージのDBGHELPlibraryにあります.

アドインは正常で、正しくロードされています.問題は、LoadLibraryシステムコールによって参照されるDBGHELPlibraryにあります.これは、ライブラリを動的にロードしようとする任意のアドインで複製できます.

確かに、DBGHELPDLLのversion(OfficeとWindows 10の最新の更新)の間に不一致があります.

あなたが言及したコミュニティに投稿しようと思います.

ありがとう、

Liviu