Интерфейс SWI-Prolog C++
Я получаю ошибку при попытке загрузить DLL, сгенерированную с помощью swipl-ld в prolog
предикат, который создает исключение, это
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 ответ:
Согласно этой заметке в ComputerHope, Windows может сообщить об этой ошибке, когда файл отсутствует (или поврежден). Похоже, что путь к файлу полностью указан в вызове use_foreign_library, но стоит дважды проверить, что путь верен относительно того, где находится DLL.
Кажется немного странным, что вы сообщили о параметрической форме сообщения об ошибке, где %1 является заполнителем для фактического имени файла. Если это было так, как ошибка появилась на вашем компьютер, это предполагает, что есть некоторая ошибка в анализе деталей исключения, поскольку они были брошены вверх по цепочке обработчиков.
Если сообщение содержит фактический путь и имя файла, то вы должны подтвердить их точность и существование файла на данном пути. Похоже, вы правильно вызвали use-foreign_library, используя предпочтительный синтаксис SWI-Prolog прямых косых черт в пути к файлу для разделения каталогов. Однако это операционная система окна (подробнее в частности, системно-зависимая реализация
dlopen()), которая генерирует ошибку, и полученное сообщение об ошибке я ожидал бы содержать путь к файлу и имя файла, которые содержат обратные косые черты.
Comments