Вот, пример изучаю.
Создал по примеру библиотеку test_dll.dll, скомпилировал.
Код dll:
ProcedureDLL Plus(a, b) ProcedureReturn a+b EndProcedure ProcedureDLL Msg_Box(Title.s, Message.s) MessageRequester(Title, Message) EndProcedure
Создал по примеру программку load_dll.exe
Код exe:
If OpenLibrary(1, "test_dll.dll")=0 ; Открываем динамическую библиотеку подпрограмм MessageRequester("", "Отсутствует файл MyDLL.dll") End ; Завершение работы программы EndIf a.f=10.56 ; Запись данных в переменные b.f=20.77 Debug a Debug b Result.f=CallCFunction(1, "Plus", a, b) ; Вызов функции Plus String.s="a+b="+Str(Result) Debug Result CallCFunction(1, "Msg_Box", @"Сообщение", @String) ; Вызов функции Message CloseLibrary(1) ; Закрытие динамической библиотеки подпр
В этой программке попробовал переменным a, b присвоить числа с плавающей точкой, т.е. суффикс .f приписал.
Однако в Debug переменная Result = 32.0, a = 10.56***********, b = 20.77************
В MessageRecuster - е - просто 32
Как получить Result = 31.33 ?