Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] api

  1. #1

    api

    Buon Giorno,
    ho fatto piccolissimi programmi in c sotto dos, ora vorrei fare qualcosa di grafica e leggendo alcune discussioni su questo forum o visto che è possibile farle con le api di windows.
    Incredibile ma vero ci sono riuscito(cose sempliccissime), ma non mi
    è chiaro un concetto.

    Le api(le routine di windows) si trovano sempre e per forza all'interno di file.dll o possono trovarsi in altri file che non siano dll????

    Grazie
    Giuseppe

  2. #2
    giuseppe devi specificare il linguaggio nel titolo della discussione, in futuro ricordatene

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Le API di windows si trovano nelle dll di sistema (più precisamente kernel32.dll, user32.dll, gdi32.dll ecc...)
    Linux user number 403381

    Stop TCPA!

  4. #4
    Per Ladyblu: la prossima volta mi ricorderò di inmserire la voce linguaggio C.


    per Fox82:
    Quindi se inserisco:
    #include <windows.h>

    int MessageBox(HWND hWnd, LPCTSTR lpText,
    LPCTSTR lpCaption, UINT uType)

    significa che le api sono definite nei file dll, ma nella libreria windows.h ci saranno dei link a quelle librerie che contengono le api o le routine api sono definite nella libreria windows.h?

  5. #5
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Le api sono contenute nelle dll

    Nella libreria windows.h e in quelle che a sua volta include sono presenti funzioni che "attivano" le api

  6. #6
    Grazie, è tutto chiaro!

  7. #7
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459


    I file .h sono degli header, non delle librerie; in essi sono contenute le dichiarazioni delle funzioni contenute nella libreria.
    Le dichiarazioni servono al compilatore per capire il comportamento della funzione (numero e tipo dei parametri, valore di ritorno)

    In C (non in c++) potrebbero anche non esserci, però l'utente potrebbe sbagliare ad utilizzare la funzione (prova ad usare la printf senza includere stdio.h, puoi passargli anche interi e verrebbe compilata correttamente, ma il prograbba non verrebbe eseguito correttamente).

    I file header sono in formato testo

    Le dll invece sono in formato oggetto e contengono la definizione della funzione (il corpo). Per ogni dll c'è inoltre un file che ha il suo stesso nome ma estensione .lib e fornisce le funzioni di accesso alla libreria.
    Devi linkare questi file al progetto per usare la libreria, in genere i compilatori lo fanno automaticamente per le dll di sistema (quelle che contengono le API).

    Spero di essere stato chiaro ! :gren:

    Ciao
    Linux user number 403381

    Stop TCPA!

  8. #8
    Originariamente inviato da Fox82


    Per ogni dll c'è inoltre un file che ha il suo stesso nome ma estensione .lib e fornisce le funzioni di accesso alla libreria. Devi linkare questi file al progetto per usare la libreria, in genere i compilatori lo fanno automaticamente per le dll di sistema (quelle che contengono le API).

    Spero di essere stato chiaro ! :gren:

    Ciao
    Vero nel caso di link implicito, però si possono anche caricare dinamicamente( senza quindi linkare gli stub contenuti nei .lib), tramite la
    LoadLibrary()

    GetProcAddress() per usare le funzioni contenute nella dll

    esempio d'uso

    esempio completo

    il caricameno dinamico è utile nel caso si volesse creare un sistema di plug-in.

    Su linux si usa dlopen() e dlsym().
    http://www.tldp.org/HOWTO/C++-dlopen/thesolution.html

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.