Newsgroup: it.comp.programmare.win32
Titolo: Help urgente: error LNK2001 su VC++

Salve a tutti,
premetto che ho già letto vecchi post su suggerimento di un amico, ma non ne
esco.
Sto creando dei blocchetti eyesweb (è un software opensource) tramite VC++.
Esiste un wizard per la creazione del workspace che già mette tra gli
esternal dependencies tutti .h che servono. Ho trovato del codice che mi
serviva e ho letteralmente copiato la classe (.h e .cpp) nel mio workspace.
Quando compilo, in fase di linking, mi appare
FilterNote.obj : error LNK2001: unresolved external symbol _CLSID_DTMatrix
FilterNote.obj : error LNK2001: unresolved external symbol _IID_IDTMatrix
Non capisco proprio perchè. Controllando nell'altro workspace va tutto bene
e compila, che ha il mio che non va, le external dependencies son le stesse.
Mi lascia perplesso una delle prime righe di codice nel file cpp:
CLSID
CLSID_FilterNote={0x1D4A4961,0x5E50,0x11D5,{0x91,0xA7,0x44,0x45,0x53,0x54,0x
0,0x0}};
Poi nel costruttore appare:
CFilterNote::CFilterNote(const CLSID *pclsid)
: CEywBlock(pclsid,1,1,2)
Da notare che la parola DTMatrix non appare da nessuna parte su nessun file.
Potete delucidarmi, ve ne sarei grato
Grazie anticipatamente

 FilterNote.obj : error LNK2001: unresolved external symbol _IID_IDTMatrix
Gli header files (i file *.h per intenderci) non sono responsabili di questi
errori. Il problema non è in compilazione ma in fase di link. Quello che
manca al tuo progetto è il linking di tutte le necessarie librerie (i file
*.lib, ancora per capirci). Sul menu vai a PROJECT > SETTINGS seleziona il
tab LINK e aggiungi le necessarie librerie nel campo OBJECT/LIBRARY MODULES.
Bob Rock

 tab LINK e aggiungi le necessarie librerie nel campo OBJECT/LIBRARY
MODULES.
Ciao e grazie innanzitutto.
Ho guardato dove dicevi, confrontando i due progetti (quello funzionante e
quello non), e le librerie sono le stesse, per tutte le categorie del tab
link (general, input ecc). Ma uno si compila e l'altro no. L'errore completo
che mi dā in fase di debug č:
Linking...
   Creating library Debug/Bayesian.lib and object Debug/Bayesian.exp
FilterNote.obj : error LNK2001: unresolved external symbol _CLSID_DTMatrix
MidiFileReader.obj : error LNK2001: unresolved external symbol
_CLSID_DTMatrix
PreCompute.obj : error LNK2001: unresolved external symbol _CLSID_DTMatrix
FilterNote.obj : error LNK2001: unresolved external symbol _IID_IDTMatrix
MidiFileReader.obj : error LNK2001: unresolved external symbol
_IID_IDTMatrix
PreCompute.obj : error LNK2001: unresolved external symbol _IID_IDTMatrix
Debug/Bayesian.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Bayesian.dll - 7 error(s), 0 warning(s)
Sai aiutarmi? Te prego, non so pių dove cercare :)
Grazie ciao


Ma hai provato a fare un progetto con l'app wizard del Visual Studio di una
ATL/COM application?
Prova fallo il piu' semplice possibile, senza nemmeno le MFC, poi fai la
build.
Noterai che il wizard ti ha messo un file chiamiamolo testCOM.idl (dipende
dal nome che hai messo al progetto), che dopo la build avra' costruito nel
progetto stesso un file testCOM_i.c di interfaccia nelle external
dependencies.
A parte tutto cio' dovrebbe crearti poi un testCOM.lib e un testCOM.dll,
proprio come cerca di fare il tuo progetto.
A me pare che ti manchi un file .idl nel tuo  progetto che poi ti dovrebbe
generare il file delle interfacce file_i.c
Il progetto da cui hai copiato era un progetto ATL/COM che generava una lib
e una dll?
I files che il progetto originario aveva sono gli stessi che hai tu (.c,
.cpp, .h, .idl, .def, .tlb) *anche* per quanto riguarda le external
dependencies?
Maurus

 dependencies?
Le external dependencies del vecchio progetto sono solo a dei files .h, e
nel mio sono identiche.
La mia perplessità è che il wizard con cui ho creato un nuovo progetto usa
una dll di eyesweb nuova, perchè ora eyesweb è alla versione 3.0. Ma per
compilare, compila il progetto vecchio, il mio invece no.
Grazie mille, ciao