2

プロローグでswipl-ldで生成されたDLLを読み込もうとするとエラーが発生します例外をスローする述語はこれです

initialization(shlib:use_foreign_library('C:/Users/valquiria.duarte/Desktop/dlog-server-0.3-beta-source/dlog-server/output/hash_swi.dll', install)),

例外はこれです

ERROR: '$open_shared_object'/3: %1 is not a valid Win32 application.
4

1 に答える 1

0

ComputerHope のこのメモによると、Windows は、ファイルが見つからない (または破損している) 場合にこのエラーを報告することがあります。use_foreign_libraryの呼び出しでファイルパスが完全に指定されているようですが、DLL の場所についてパスが正しいことを再確認する価値があります。

%1 が実際のファイル名のプレースホルダーである ERROR メッセージのパラメトリック形式を報告したのは少し奇妙に思えます。コンピューターにエラーが表示された場合は、ハンドラー チェーンにスローされた例外の詳細の解析に失敗したことが示唆されます。

メッセージに実際のパスとファイル名含まれている場合は、それらが正確であることと、指定されたパスにファイルが存在することを確認する必要があります。SWI-Prolog の推奨するファイルパス内のスラッシュの構文を使用して、ディレクトリを分離するために use-foreign_libraryを正しく呼び出したようです。ただし、エラーを生成するのは Windows のオペレーティング システム (より具体的には のシステム依存の実装dlopen()) であり、結果のエラー メッセージには、バックスラッシュを含むファイル パスとファイル名が含まれていると予想されます。

于 2011-08-12T22:55:20.240 に答える