Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C++] Inserire dll esterna in un progetto

    Ciao a tutti!
    Devo chiedere questa cosa: devo fare un programma basandomi su una dll fornita da altri.
    Assieme alla dll ho un file .c che contiene tutti i metodi della dll.
    Ora la domanda è questa: siccome io solitamente programmo in java , e visto che adesso mi trovo a sviluppare il progetto in C++, come faccio a richiamare i metodi della dll in un progetto C++?
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma nel file .c c'è tutto il sorgente della DLL?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    No, vengono semplicemente richiamati i metodi della dll.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora nel codice viene caricata dinamicamente la DLL con la API LoadLibrary?

    Puoi mostrare il codice C in questione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Guarda, purtroppo adesso no perché sto usando il cellulare. Comunque non mi pare proprio che venga richiamata. Difatti LoadLibrary credevo di doverlo usare solo io nel mio progetto, e poi accedere ai singoli metodi. Solo che non conosco la sintassi da usare, ma non penso che dovrebbe essere troppo complicata.
    Fondamentalmente non credo che il file .c sia necessario. Forse serve solo per lo sviluppo della DLL.
    Tu mi sapresti dire in due righe come si accede a una DLL in C?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Partiamo dal fatto che non si dice in "due righe" come fare.

    Se hai il file .LIB (import library) corrispondente, puoi usarla direttamente indicandola al tuo compilatore.

    Se non l'hai, puoi ottenere la Import Library in questo modo

    http://support.microsoft.com/kb/131313/en-us

    Ovvero, senza import library, puoi caricare la DLL dinamicamente con la

    LoadLibrary
    http://msdn.microsoft.com/en-us/libr...sktop/ms684175(v=vs.85).aspx

    e ottenere un puntatore alle funzioni da chiamare con la

    GetProcAddress
    http://msdn.microsoft.com/en-us/libr...sktop/ms683212(v=vs.85).aspx

    Naturalmente dovrai conoscere tutto sui parametri delle varie funzioni, magari avendo il corrispondente file header .H o ricavandolo dal tuo .C

    Praticamente non ti posso dire nulla di più senza vedere il .C in questione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Scusa, so che "due righe" è una definizione sfortunata. Comunque grazie, sei già molto utile così.
    Mi ricordavo infatti che servisse la import library, ma io non ce l'ho. Proverò a fare come dici. Il discorso delle due righe nasce dal fatto che sono un po' stretto coi tempi e mi trovo a lavorare con un linguaggio del quale sono poco pratico.Solo che fare la stessa cosa in Java sarebbe stato un suicidio

  8. #8
    Aggiungo: i parametri da passare alle varie funzioni li conosco perché ho tutta la documentazione della DLL

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se vuoi/puoi mostrare il .C (o parte di esso) ti posso dare una mano più praticamente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Grazie, spero di poterlo fare domani, quando sarò davanti al pc.

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.