Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c++]librerie

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]librerie

    Ciao.
    Ho un progetto(progetto1) in cui creo una library(.lib).
    Questa library utilizza a sua volta delle librerie.
    Il problema è che quando faccio il link di questa library in un altro progetto(progetto2) mi vengono fuori degli errori del tipo:

    Error 8 error LNK2019: unresolved external symbol __imp__ilActiveImage@4 referenced in function "public: unsigned char __thiscall ilImage::ActiveImage(unsigned int)" (?ActiveImage@ilImage@@QAEEI@Z) Wm4Graphics90d.lib

    che sembrano fare riferimento alle librerie a linkate nel progetto1.
    come devo includere le dipendenze?
    nel progetto1 o progetto2 ?

    uso vs 2008.
    Ho provato a linkare le library nel progetto 1 con l'opzione "Link Library dependency" a yes e mi da questi warning:
    2>ILU.lib(ILU.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR already defined in Devil.lib(DevIL.dll); second definition ignored
    2>ILU.lib(ILU.dll) : warning LNK4221: no public symbols found; archive member will be inaccessible
    2>ILUT.lib(ILUT.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR already defined in Devil.lib(DevIL.dll); second definition ignored
    2>ILUT.lib(ILUT.dll) : warning LNK4221: no public symbols found; archive member will be inaccessible

    ps.la libreria che sto cercando di linkare è in c non in c++ ,ho letto qualcosa nella descrizione dell errore su dichiarare extern c "file" ma non ho capito bene.
    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Esiste inoltre della documetazione su come usare le dll e le lib?
    Ad es . ho una dll senza il file h come faccio a sapere la lista delle funzioni?
    Grazie.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da giuseppe500
    Ad es . ho una dll senza il file h come faccio a sapere la lista delle funzioni?
    La lista la puoi ottenere con tool come

    Dependency Walker

    ma non potrai conoscere gli argomenti nè il tipo di dato restituito.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    e per quanto riguarda gli errori del linker sai come si puo' sistemare?
    questo pè un esempio:
    1>Wm4Graphics90d.lib(ImageEx.obj) : error LNK2019: unresolved external symbol __imp__ilGetError@0 referenced in function "public: static void __cdecl ilError::Check

  5. #5
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Dovresti dire al compilatore di utilizzare la nomenclatura delle funzioni utilizzata in C . . . Questo si può fare anteponendo extern "C" ad ogni prototipo di funzione scritta in C
    codice:
    extern "C" void functionC( );
    oppure raggruppando tutti prototipi delle funzioni e racchiuderli in un unica istruzione extern "C":
    codice:
    // header della libreria scrtta in C
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    void func1( );
    // altri prototipi
    
    #ifdef __cplusplus
    }
    #endif
    Nota che quelle istruzioni di compilazione condizionale sono necessari in caso in cui il codice venga compilato in ambiente C ove l' istruzione extern "C" non ha significato . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ho guardato ed è gia cosi'.
    Incluudevo un .h deprecato,adesso mi da errore solo sulle funzioni che richiamo da dentro la mia libreria.I tipi(e i typedef) funzionano, non riesco a capire perchè.
    l'errore è del tipo :
    Error 1 error LNK2019: unresolved external symbol __imp__ilLoadImage@4 referenced in function "public: class ImageEx * __thiscall ImageEx::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?Load@ImageEx@@QAEPAV1@ABV?$basic_string@DU?$char _traits@D@std@@V?$allocator@D@2@@std@@_N@Z) Wm4Graphics90d.lib

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.