Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Estado
subtletrue
colourGreen
titletlpp - language

  • CallFunction(cFunctionName, cSignature, xRet, xParameters)
    • objetivo: chamar uma função de uma DLL escrita em C.
    • cFunctionName: o nome da função que será chamada (case-sensitive).
    • cSignature: a assinatura da função (retorno e parâmetros). Veja a seção DynCall - Assinatura da chamada, que fala sobre assinaturas de funções e métodos.
    • xRet: uma variável para guardar o retorno da função. Se for função void, passe Nil.
    • xParameters: a lista de parâmetros da função chamada. Se a função não possuir parâmetros, essa lista não precisa ser passada.
    • retorno: lógico
      • .T.  execução com sucesso
      • .F.  execução com erro
Código C da biblioteca - de olho na função addCódigo TLPP para invocar a biblioteca - de olho na CallFunction


Esse exemplo coloca lado a lado um possível código de uma biblioteca escrita em C e o código TLPP que carrega e executa a função add exportada.

Bloco de código
languagecpp
themeDJango
firstline1
titleExemplo: lado da biblioteca
#include <stdio.h>
#include <stdlib.h>

#define EXPORT __declspec(dllexport)

EXPORT int add(int a, int b)
{
  return a + b;
}
Bloco de código
languagecpp
firstline1
titleExemplo: lado TLPP
  #include "tlpp-core.th"

Function U_DynCall()
  Local oDll as Object
  Local nValue as Numeric
  
  If (IsSrvUnix())
    oDll := tRunDll():New("./dllc.so")
  Else
    oDll := tRunDll():New("dllc.dll")
  EndIf

  oDll:callFunction("add", "III", nValue, 4, 8)
  Conout("Retorno: " + cValToChar(nValue)) // espera-se 12

  oDll:Free()
  
Return