2011-08-10 36 views
2

我得到一个错误尝试加载在序言 抛出异常谓词与swipl-LD产生的DLL被这个SWI-Prolog的C++接口

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. 
+0

我查看了SWI-Prolog当前的** use_foreign_library/2 **谓词文档,并且没有看到'install'作为第二个参数的选项。我的读书是“现在”原子是唯一有意义的选择。你有没有尝试删除第二个参数? – hardmath

回答

0

根据this note at ComputerHope,当文件丢失(或损坏)时,Windows可能会报告此错误。看起来在use_foreign_library的调用中完全指定了文件路径,但值得仔细检查该路径对于DLL的位置是否正确。

您报告ERROR消息的参数形式似乎有点奇怪,其中%1是实际文件名的占位符。如果这是您的计算机出现错误的方式,则表明在处理程序链中抛出异常详细信息时会出现某些故障。

如果消息确实包含实际的路径和文件名,那么您应该确认它们的准确性和文件在给定路径上的存在。看起来您已正确调用use-foreign_library使用SWI-Prolog的文件路径中正斜杠的首选语法来分隔目录。但是,它是生成错误的Window操作系统(更具体地说是依赖于系统的实现dlopen()),并且生成的错误消息我希望包含包含反斜杠的文件路径和文件名。