windows - kalder en DLL-funktion fra tcl via twapi

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en TCL-applikation, der kun er beregnet til at køre på Windows, og bruger twapi til at få adgang til nogle Windows-specifikke funktioner. [5]


Nu skal jeg ringe til en C-funktion, der er i en brugerdefineret DLL.


Jeg ved, at jeg kan indlæse DLL'en med twapi::load\_library (skal være den samme som LoadLibraryEx()), men jeg kan ikke forstå, hvordan man kalder en funktion i selve DLL'en!


Hvad savnede jeg?


Jeg foretrækker at undgå andre afhængigheder (f.eks. critcl og for at undgå at skulle omdanne den nuværende dll i en tcl-udvidelse (fx via SWIG), så en twapi-løsning ville være virkelig nyttig!

Bedste reference


TWAPI synes ikke at give nogen offentlig binding af GetProcAddress (Windows API-funktionen for at komme fra navnet til adressen til en funktion i en DLL).


Brug ffidl til simple API'er (dvs. hvor der ikke er tilbagekald) eller critcl (for alle slags API'er, herunder dem med tilbagekald, fordi det kan gøre meget mere omfattende kodegenerering, mere indsats for at bruge).

Andre referencer 1


twapi s load\_library kommando er der til at manipulere ressourcerne i en dll (strengtabeller, ikon mv.) Det er ikke beregnet til at kalde funktioner i dll siden det, som Donal påpeger, kræver marshalling og nogle kodegenerering.

Andre referencer 2


Det ser ud som om du skal bruge ffidl til at udføre jobbet. [6]