Newsgroup: it.comp.programmare.win32
Titolo: Aggangiare una dll

Ciao a tutti....
Ho creato una libreria in VC6, tutto OK! il problema sorge quando cerco di
'caricarla' in un'altro progetto. Il nuovo progetto è creato come win32
application però, se uso il costrutto 'WinMain' etc..etc.. tutto fila
liscio, accedo alle mie funzioni/classi tutto quello che voglio. Se uso il
costrutto 'main' ottengo il seguente errore:
unresolved external symbol _WinMain@16
purtroppo ho sotto mano un progetto che usa dll, ed inizia il flusso del
programma con 'main'. Mi chiedevo dove sbaglio. Nel creare la libreria o
ad utilizzare in nuovo progetto?
grazie.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie.
Devi decidere che tipo di progetto vuoi creare (Visual C++ 6.0 ti dà diverse
opportunità).
I progetti Win32 richiedono come funzione principale WinMain.
Le applicazioni di tipo console utilizzano il vecchio main.
Poi dipende anche che funzionalità implementa la tua dll.
Se la tua dll usa l'interfaccia grafica windows molto probabilmente il tuo
progetto deve essere Win32.
Ciao.
Porlock

 Le applicazioni di tipo console utilizzano il vecchio main.
non è vero
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.0. C, C++ and ASM developers
                               and beta testers are welcome!

 non č vero


 perchč non motivi le risposte, potrebbero essere piů utili!
cosa devo motivare? semplicemente non č vero. Si possono usare entrambe 
intercambiabilmente, indipendentemente dal tipo di programma


 cosa devo motivare? semplicemente non è vero. Si possono usare entrambe


 win32?
non lo so. Non uso Visual C++, e quindi non so dove andare a modificare 
le impostazioni e le librerie che vengono linkate nel programma. Con il 
C++ Builder, ad esempio, basta sostituire c0w32(w).obj con c0x32(w).obj 
nel file del progetto


 Domenico
Windows supporta due tipi di applicazioni: quelle basate su un interfaccia
grafica (GUI) e quelle basate su un interfaccia testuale (CUI). In gergo
vengono definiti "sottosistemi", per quanto il termine sottosistema
all'interno soprattutto di WINNT abbia molteplici significati.
Il confine fra questi due sottosistemi è abbastanza confuso, dato che è
possibile creare applicazioni basate su CUI che visualizzano finestre di
dialogo Win ed è altresì possibile realizzare applicaizoni basate su GUI che
visualizzano finestre console (magari per i mex di debug).
In VC++ il modo IDEALE per creare progetti in un sistema piuttosto che in un
altro è utilizzare il Wizard. Nel caso ci sia la necessità di migrare un
applicazione da un sottosistema all'altro la cosa migliore è cmq creare un
nuovo progetto con il wizard e importare i sorgenti.
Nel caso invece si voglia fare tutto a mano smanettando, è possibile
utilizzare l'opzione /SUBSYSTEM. Settando /SUBSYSTEM:CONSOLE si creano
applicazioni basate su GUI, settando /SUBSYSTEM:WINDOWS su GUI.
Nel caso in cui sia basata su CUI il loader provvede a creare
automaticamente una finestra di console per l'applicazione. Per le
applicazioni GUI invece il loader non si preoccupa della UI.
NB: il fatto che un applicazione sia basata su CUI piuttosto che su GUI non
indica affatto che un applicazione sia Win32 o meno. Influenza solo la
gestione della UI.
A seconda del tipo di sottosistema specificato, il linker cerca una funzione
punto d'ingresso diversa. Per le applicazioni basate su CUI la funzione è
main (per le unicode è wmain), per quelle basate su GUI è WinMain (per
unicode wWinMain).
Volendo, cosa che non tutti sanno, è anche possibile rimuovere del tutto
l'opzione /SUBSYSTEM. A quel punto il linker determina automaticamente tutto
da solo.
Ciao :-)

Grazie per l'esauriente risposta!
Ciao
Domenico

SEI GRANDISSIMO!!!
è andato tutto alla grande, linkato senza problemi!
Grazie davvero!
Ciao.
