Cdecl ou StdCall qual usar ?
Cdecl ou StdCall qual usar ?
Todas as DLLs ACBrLibxxx vem em dois formatos Cdecl e StdCall, mas você deve estar se perguntando qual delas utilizar ? o que seria cdecl e stdcall ?, Neste tópico vamos abordar um pouco sobre isso.
O que seria Cdecl e StdCall ?
Cdecl e StdCall são Convenção de chamada de funções ou seja são a forma que o seu programa deve chamar as funções e processar o retorno da biblioteca .
Em ciência da computação, convenção de chamadas de função é um esquema o qual as funções de um programa recebem parâmetros das funções chamadoras e como elas retornam um resultado. Essas convenções diferem de acordo com as linguagens de programação, os sistemas operacionais e CPUs. |
Como pode ver existem varias convenções as mais usadas são cdecl e stdcall.
Convenção de chamada Cdecl
Cdecl é uma convenção de chamada padrão para programas em C e C++ nesta convenção a pilha é limpa pelo chamador. O Cdecl cria executáveis maior que stdcall, porque requer que cada chamada de função tenha incluso o código de limpeza de pilha, apesar disso nos sistemas Unix(s), Linux, é a convenção padrão de uso.
Convenção de chamada Stdcall
A convenção de chamada Stdcall é usada para chamar funções da API do Win32, sendo a convenção de chamada padrão de sistemas Windows. Nesta convenção o receptor limpa a pilha diferente do Cdecl. As funções que usam esta convenção de chamada exigem um protótipo de função.
Mas e ai qual devo usar ?
Como você pode ver nos tópicos anteriores a convenção de chamada depende do sistema operacional e da linguagem de programação, então você deve verificar qual o sistema que você vai usar e qual a linguagem de programação que vai ser utilizada para definir qual convenção. Ex.:
- Visual Basic: Usa apenas StdCall.
- Visual Basic .Net: Usa Cdecl ou StdCall.
- C#: Usa Cdecl ou StdCall.
- Java - JNA: Usa apenas StdCall ou Cdecl no windows e apenas Cdecl no Linux.
Created with the Personal Edition of HelpNDoc: Easy EPub and documentation editor