Интерфейс SWI-Prolog C ++ - PullRequest
       5

Интерфейс SWI-Prolog C ++

2 голосов
/ 10 августа 2011

Я получаю ошибку при попытке загрузить DLL, сгенерированную с помощью swipl-ld, в прологе предикат, который выдает исключение, это

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.

1 Ответ

0 голосов
/ 13 августа 2011

Согласно этой заметке на ComputerHope , Windows может сообщить об этой ошибке, если файл отсутствует (или поврежден). Похоже, что путь к файлу полностью указан в вызове use_foreign_library , но стоит дважды проверить правильность пути относительно места расположения DLL.

Кажется немного странным, что вы сообщили о параметрической форме сообщения ERROR, где% 1 является заполнителем для фактического имени файла. Если именно так и возникла ошибка на вашем компьютере, это говорит о том, что произошла ошибка при разборе сведений об исключительной ситуации, поскольку они были выброшены в цепочку обработчиков.

Если сообщение содержит , содержит фактический путь и имя файла, то вам следует подтвердить их точность и существование файла по указанному пути. Кажется, вы правильно вызвали use-foreign_library , используя предпочитаемый SWI-Prolog синтаксис прямой косой черты в пути к файлу для разделения каталогов. Однако именно операционная система Windows (точнее, зависящая от системы реализация dlopen()) генерирует ошибку, и в результате появляется сообщение об ошибке, которое, как я ожидаю, будет содержать путь к файлу и имя файла с обратными слешами.

...