qual seria a diferença de um DLL para DOS e WINDOWS ?
Não sou especialista em DLL, até porque só fiz uma até hoje. Mas há diferença nas chamadas das funções. O Windows necessita de uma forma de montagem diferente. Além da forma especial com que os argumentos das funções são armazenados em pilha.
Para DOS, seria apenas um arquivo TEXTO
Nada a ver com texto. É código objeto mesmo.
Para WINDOWS, eu lembro ter perguntando, mas o que me interessa saber, se teria como extrair (em Clipper ou outro aplicativo) seu conteúdo.
Nunca precisei de algo parecido. Mas acredito que seja possível sim. Talvez até exista uma função da API pra listar esses nomes de funções, já que a DLL (do Windows, pelo menos) mantém uma tabela interna com os nomes das funções, pois é assim que elas são pesquisadas. Uma função abre a DLL e uma outra requisita um ponteiro para uma certa função pelo nome. Se o ponteiro retornar NULO, a função não existe. Mas não há nada assim para os argumentos da função. Aí é questão de interface. Você precisa conhecer a interface da DLL, evidentemente. Se você não conhece quais são seus parâmetros, nem os tipos de dados destes, nada feito. Mas normalmente um arquivo de cabeçalho está associado à DLL e neste arquivo constam os protótipos de todas as funções que dela fazem parte. Aliás, conhecendo a interface, você nem precisa fazer um programa para interagir com a DLL. No windows há um programa chamado RUNDLL32.EXE (se não me engano no nome), que permite a execução de uma função embutida numa DLL.
Sabemos que DLL significa: Dynamic-Link Library, mas o quê guarda as DLLs for WINDOWS ? Guardam funções ?. Tem como saber quais são as funções que existem numa DLL ?.
Justamente. Biblioteca de enlace dinâmico. Estamos mais acostumados às bibliotecas de enlace estático, cujo código reside no próprio executável, depois que as referências às funções são substituídas internamente. O código é então "colado" ao executável. É quase a mesma coisa que com DLL. Mas na DLL o código reside fisicamente em outro arquivo. E por isso, ela permite uma melhor componentização do software, que pode até ser utilizado por aplicações totalmente diferentes ao mesmo tempo.
Considerando que as DLLs for DOS (caso seja assim), sejam arquivos textos.
Realmente, nada a ver.
Me interessa saber um pouco mais sobre isso, e saber em que casos eu poderia utilizar isto.
As utilidades são muitas. A principal é a distribuição de componentes de software compartilhável. Uma vez que determinada tarefa esteja madura e estável, ela pode passar a residir numa DLL. O programa, por sua vez, pode passar por diversas atualizações, sem que seja necessário alterar a DLL da qual ele depende. A distribuição de atualizações aos usuários acaba ficando mais leve, portanto.
[]'s
Maligno
http://www.buzinello.com/prg