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 |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas