Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-03-2007, 09:51   #1
cerbert
Senior Member
 
L'Avatar di cerbert
 
Iscritto dal: Feb 2001
Città: Torino
Messaggi: 11769
[MFC] Enigma da SuperGuru

Buon giorno a tutti,

di recente mi sto occupando della transizione di una applicazione piuttosto massiccia da Visual Studio 6.0 a Visual Studio 2005.

Durante tale transizione, quando si tratta di compilare delle dll, ottengo il seguente warning:
Codice:
Warning	1	warning C4003: not enough actual parameters for macro '_IMPLEMENT_RUNTIMECLASS'		16
Andando a verificare scopro che il warning viene causato da delle macro custom da noi fatte per creare degli "_IMPLEMENT_RUNTIME_CUSTOM" in modo da poter serializzare nell'applicazione principale tipi di dati creati nelle dll.

Ecco un esempio di macro custom
Codice:
#define IMPLEMENT_SERIAL_EXP_CELLMODEL(class_name, base_class_name, wSchema) \
	CObject* PASCAL class_name::CreateObject() \
		{ return new class_name; } \
	_IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
		class_name::CreateObject) \
	AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name)); \
	CELL_MODEL_IMPEXP CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
		{ pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
			return ar; }
Il problema è che la definizione di _IMPLEMENT_RUNTIMECLASS (in AFX.H) sembra cambiata molto dalla precedente versione di MFC
Codice:
#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
	CRuntimeClass* PASCAL class_name::_GetBaseClass() \
		{ return RUNTIME_CLASS(base_class_name); } \
	AFX_COMDAT AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
		#class_name, sizeof(class class_name), wSchema, pfnNew, \
			&class_name::_GetBaseClass, NULL }; \
	CRuntimeClass* class_name::GetRuntimeClass() const \
		{ return RUNTIME_CLASS(class_name); } \
alla attuale
Codice:
#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew, class_init) \
	CRuntimeClass* PASCAL class_name::_GetBaseClass() \
		{ return RUNTIME_CLASS(base_class_name); } \
	AFX_COMDAT CRuntimeClass class_name::class##class_name = { \
		#class_name, sizeof(class class_name), wSchema, pfnNew, \
			&class_name::_GetBaseClass, NULL, class_init }; \
	CRuntimeClass* PASCAL class_name::GetThisClass() \
		{ return _RUNTIME_CLASS(class_name); } \
	CRuntimeClass* class_name::GetRuntimeClass() const \
		{ return _RUNTIME_CLASS(class_name); } \
c'è, infatti, quell'ultimo parametro in più "class_init" che ignoro completamente cosa faccia e che tipo di argomento accetti... o, meglio, suppongo che accetti un parametro di tipo AFX_CLASSINIT, ma non so a quale valore debba essere inizializzato tale parametro.

Ovviamente, se la precedente forma di _IMPLEMENT_RUNTIMECLASS era a malapena documentata in qualche FAQ ed in qualche paginetta di codeguru, la attuale è ASSOLUTAMENTE ignota ai più.

Se qualcuno, certamente più preparato di me, riesce a darmi qualche dritta, avrà tutta la mia gratitudine.
__________________
Eroi da non dimenticare: Nicola Calipari (04/03/2005) e Vittorio Arrigoni (14/04/2011) e Bradley Manning.
Sono certo che anche i francesi si indignarono per il fatto che i tedeschi, piuttosto che veder dissolvere la loro nazione, preferirono il nazismo. Chi non impara la storia...
cerbert è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2007, 10:19   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
Non so se ti può servire...
cmq prova a vedere qui:
https://forums.microsoft.com/MSDN/Sh...36445&SiteID=1
c'è un altro con un problema nella migrazione da VS6 a VS8, solo che il suo probema è diverso, ma magari la parte che interessa a te l'ha fatta giusta..
Io non ci capisco assolutamente nulla di quello che c'è scritto e sono al lavoro e non ho tempo per capirci qualcosa
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2007, 10:55   #3
cerbert
Senior Member
 
L'Avatar di cerbert
 
Iscritto dal: Feb 2001
Città: Torino
Messaggi: 11769
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
Non so se ti può servire...
cmq prova a vedere qui:
https://forums.microsoft.com/MSDN/Sh...36445&SiteID=1
c'è un altro con un problema nella migrazione da VS6 a VS8, solo che il suo probema è diverso, ma magari la parte che interessa a te l'ha fatta giusta..
Io non ci capisco assolutamente nulla di quello che c'è scritto e sono al lavoro e non ho tempo per capirci qualcosa
Grazie comunque, il problema sembra analogo ma attualmente io non ho i suoi enormi problemi.
__________________
Eroi da non dimenticare: Nicola Calipari (04/03/2005) e Vittorio Arrigoni (14/04/2011) e Bradley Manning.
Sono certo che anche i francesi si indignarono per il fatto che i tedeschi, piuttosto che veder dissolvere la loro nazione, preferirono il nazismo. Chi non impara la storia...
cerbert è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2007, 14:31   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
quella macro non andava usata proprio perché non è documentata; io non ti posso aiutare perché non l'ho mai usata, guarda un po'
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2007, 14:42   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
comunque sia vai a vedere la definizione della struct CRuntimeClass, che dovrebbe stare sempre in AFX.H: il parametro class_init viene usato per inizializzare l'ultimo campo della struct. come si chiama quel campo?
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La prima missione orbitale del razzo spa...
Servizi in streaming sempre più c...
Anteprima della Leapmotor B03X: inizia l...
Anthropic accusa la Cina: Claude utilizz...
I satelliti Rassvet (Starlink russo) di ...
Un agente IA ha risolto un problema su W...
Cina: la CMSA potrebbe cambiare parte de...
68 mensilità di bonus per i dipen...
Rocket Lab ha fatto ricorso contro la de...
Nutanix rende disponibile Azure Virtual ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v