Click here to load reader
Upload
sdoamti
View
390
Download
2
Embed Size (px)
DESCRIPTION
лабораторная работа по ИИС
Citation preview
Лабораторная работа №1
Тема: Разработка прототипа экспертной системы.
Цель: научится создавать DLL библиотеки на языке Visual Prolog и обращаться к ним из других языков программирования.
Создание прототипа экспертной системы будет включать два этапа:
• Создание DLL библиотеки на Visual Prolog 5.2, где будет происходить экспертный вывод.• Создание интерфейса на языке С#, с
подключением библиотеки.
Создание элементарного проекта.
Создадим библиотеку, где будет происходить вывод сообщения «Hello Prolog» и подключимся к ней из MS Visual Studio.
Создаем проект «Project -> New project», на экране отображается окно, предоставляющее
возможность задать параметры проекта.
На Вкладке «Target» необходимо задать значения следующих полей:
• платформа(«Platform»), в нашем случае, это 32-х разрядная версия Windows;
• стратегия графического интерфейса(«UI Strategy»), в примере я буду использовать консоль(«Textmode»);
• тип приложения(«Target Type»), выбираем тип «dll»;
• основная программа(«Main Program»), определяет компилятор какого языка будет использоваться для построения исполняемых фалов (в нашем случае – «Prolog»).
Имена экспортируемых библиотекой функций должны быть записаны в секции EXPORTS файла определения модуля. Для этого используем кнопку «New» в менеджере проекта, и выбираем на диске данный файл test.def.
В приведенном примере файл определения модуля, был создан автоматически Visual Prolog, но в секцию EXPORTS было добавлено имя функции «test»:
LIBRARY testCODE PRELOAD MOVEABLE DISCARDABLEDATA PRELOAD SINGLE HEAPSIZE 1024EXPORTStest
Исходный код программы будет выглядеть следующим образом:
include "test.inc"global predicates procedure test( string, string ) - ( i, o ) language stdcallclauses test( A, B ) :- write( A ), B = "hello Prolog" ,
write (B). goal !.
Создание интерфейса на языке С#, с подключением библиотеки.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; namespace pr_write_hello{ class Program { [DllImport("test.dll")] static extern void test(string s, string str); static void Main(string[] args) { string str=""; test("Hello C# - ", str ); Console.ReadKey(); } }}
using System.Runtime.InteropServices – используется для подключения сервисов взаимодействия с операционной системой.
Функция которая вызывается из DLL: [DllImport("test.dll")];
static extern void test(string s, string str);
PS:Если библиотека лежит в путь к проекту\bin\Debug, то в DllImport пишут только наименование библиотеки. Также можно полностью прописать путь к библиотеке: путь к библиотеке\\название_бибилотеки.dll
Результат после запуска программы: