|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
[VC++]Le DLL buildate non hanno la lib corrispondente...
Salve,
come al solito stavo complicandomi la vita, tentando di scindere la mia engine in 3 dll separate, ognuna ad un livello di astrazione diverso (Core, Library, Engine). Lo problema è che, sebbene compila tutto, il linking non va a buon fine poichè di queste 3 dll non vengono prodotte le librerie corrispondenti... e quelle al livello inferiore interrompono il linking segnalando la mancanza. Non so bene cosa dovrei fare per convincerlo a buildare l'accoppiata lib + dll, dato che ha SEMPRE fatto in questa maniera, se era selezionato "Libreria Dinamica (.dll)" come tipo di output... Come dovrei fare per convincerlo a continuare così? Scommetto che è una cavolata da qualche parte ma proprio non saprei dove mettere mano
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
controlla che sia impostato un nome valido per l'opzione /IMPLIB del linker (impostazioni del progetto, Linker, Advanced, Import Library; controlla che il nome sia impostato sia per la configurazione di Debug sia per quella di Release). di norma nell'IDE quell'opzione viene impostata a "$(TargetDir)$(TargetName).lib", dove $(TargetDir) e $(TargetName) sono due macro che l'IDE espande quando costruisce la command line.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Per puro caso ci sono arrivato anche io... per sicurezza ci ho copiato proprio il path dove vorrei che mettesse la library, ma non viene generato proprio niente
Devo settarla anche per Release oppure non va? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
se non stavi compilando in modalità di Release non è quello il problema; puoi incollare command line e output del linker?
prova anche a fare una cosa banalissima, ovvero prima un clean di tutta la soluzione e poi un rebuild totale, perché non vorrei che il problema fosse banalmente che in realtà c'è qualche errore e lui non builda un bel niente, e la DLL che vedi è rimasta dall'ultima successful build |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Distrutta la cartella e rifatto, la dll non rimaneva dalla build precedente
![]() Cmq ecco il log: Quote:
Codice:
2>------ Rebuild All started: Project: CRenderLibrary, Configuration: Debug Win32 ------ 2>Deleting intermediate and output files for project 'CRenderLibrary', configuration 'Debug|Win32' 2>Compiling with CUDA Build Rule... **un sacco di warning** 2>Compiling... **parecchi altri warning** 2>nedmalloc.c 2>Linking... 2>LINK : fatal error LNK1181: cannot open input file 'CRenderCore.lib' 2>Build log was saved at "file://d:\DEV\CRender\Library\Debug\BuildLog.htm" 2>CRenderLibrary - 1 error(s), 62 warning(s)
|
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Praticamente, nelle soluzioni "multi-projects", devi specificare l'ordine di build.
Per esempio, se abbiamo una soluzione che contiene due progetti di DLL: DllA e DllB, dove DllB utilizza le funzioni di DllA, dobbiamo agire così: Click destro sulla soluzione: Scegli la voce "Projects Build Order" Seleziona il tab "Dependencies" Nella combo Projects seleziona "DllB" Nella lista "Depends on" metti il segno di spunta su "DllA":
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
So che ormai il thread era defunto, ma metto la soluzione uguale:
In pratica, non stavo esportando alcuna classe, e il file non veniva creato... avevo scordato _declspec(dllexport) Ora l'ho messo e va |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
se avessi postato anche la command line del linker come ti avevo chiesto ce ne saremmo accorti: avremmo notato che mancava il file .def
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
vabbè me ne ero scordato... anche perchè non so nemmeno dove si rimedia la command line attuale del linker, io vi avrei massimo potuto dare quella col $(qualcosa) che non aiutava sicuro.
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
nel build log salvato in "d:\DEV\CRender\Core\Debug\BuildLog.htm" oppure nelle opzioni del linker, tab "Command Line".
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:32.





















