PureBasic
;
; ------------------------------------------------------------
;
;   PureBasic - DLL example file
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;
; Этот пример - скелет, чтобы создать легко использование DLL PureBasic
; dll создан в каталоге 'Compilers', под название 'purebasic.dll'.
; Связанный '.lib' сгенерирован, чтобы использовать
; с VisualC ++.
;
;
; Следуйте правилам:
;   - Никогда не пишите код вне процедуры, за исключением переменных
;   или описание структуры.
;   
;   - подпрограммы DirectX  не должны быть инициализированы в
;   AttachProcess() процедуре
;   
;   - Есть 4 процедуры вызываемые автоматически: AttachProcess(),
;   DetachProcess(), AttachThread() and DetachThread(). Если Вам они не нужны,
;   просто удалите их.
;

#TESTDLL = 0

CompilerIf #TESTDLL = 0

  CompilerIf #PB_Compiler_OS = #PB_OS_Windows

    ; Эти 4 процедуры - специфические Windows
    ;

    ; Эта процедура вызывается один раз, когда программа загружает библиотеку впервые.
    ; Все материалы init могут быть сделаны здесь (но не DirectX init).
    ;
    ProcedureDLL AttachProcess(Instance)
    EndProcedure
  
  
    ; Вызывается, когда программа выпускает (освобождает) DLL
    ;
    ProcedureDLL DetachProcess(Instance)
    EndProcedure
  
  
    ; Обоих вызывают, когда поток в программе вызывает или выпускает (освобождает) DLL
    ;
    ProcedureDLL AttachThread(Instance)
    EndProcedure
  
    ProcedureDLL DetachThread(Instance)
    EndProcedure

  CompilerEndIf

  ; Реальный код запускается здесь..
  ;
  ProcedureDLL EasyRequester(Message$)

    MessageRequester("EasyRequester !", Message$)

  EndProcedure

CompilerElse

  If OpenLibrary(0, "PureBasic.dll") Or OpenLibrary(0, "PureBasic.so")
    CallFunction(0, "EasyRequester", @"Test")  
  EndIf
    
CompilerEndIf