TLPP - LANGUAGE
- NewPointer()
- objetivo: criar uma abstração para um ponteiro genérico da DLL.
 - Retorno:
- um objeto opaco que referencia um endereço na DLL.
 - este retorno é do tipo object em TLPP.
 
 
 
Estando do lado TLPP, via operação NewPointer, a aplicação pode manter uma abstração para algum ponteiro do lado da DLL.
De maneira geral, essa amarração se faz por dois passos: cria o objeto de abstração e depois faz uma chamada GetVar, CallFunction ou CallMethod que possa retornar o ponteiro real.
Esse exemplo pode e deve ser complementado com as operações que fazem cópia de buffer, por isso veja também tRunDll:StrCpy e tRunDll:MemCpy.
Exemplo: lado da biblioteca #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define EXPORT __declspec(dllexport)
EXPORT void* getPtr()
{
  char* p = (char *) malloc(64);
  strcpy_s(p, 64, "Dyncall Test");
  return p;
}
 | Exemplo: lado TLPP #include "tlpp-core.th"
Function U_DynCall()
  Local oDll as Object                 // objeto de carga da dll
  Local oPtr as Object                 // abstração para um ponteiro da dll
  If (IsSrvUnix())
    oDll := tRunDll():New("./dllc.so")
  Else
    oDll := tRunDll():New("dllc.dll")
  EndIf
  // obtendo o ponteiro
  oPtr := oDll:NewPointer()
  oDll:CallFunction("getPtr", "P", oPtr)       
  // terminou? vamos sanitizar o uso da dll
  oDll:Free()
  
Return
 | 
Import HTML Content
            Visão Geral
            Conteúdo das Ferramentas