Salve a tutti
dovendo risolvere un problema per un altro programma e volendo verificare una mia idea.
ho creato un progetto console molto semplice
#include "stdafx.h"
#include <iostream>
using namespace std;
extern "C" int _stdcall xyz(int &abc,int &def);
extern "C" int _stdcall Dimensione_Variabile1(char *dato);
int _tmain(int argc, _TCHAR* argv[])
{
int indy,kindy,errore;
char b[55];
cout << "inserisci un numero : ";
cin >> indy;
b[33]=0;
kindy=Dimensione_Variabile1(b);
errore=xyz(indy,kindy);
cout << "somma = "<< errore;
return 0;
}
ho aggiunto i due file
#include "stdafx.h" //file 1.cpp
int Dimensione_Variabile1(char *dato)
{ return sizeof(dato); }
//--------------------------------------------------
#include "stdafx.h" // file 2.cpp
int xyz(int &uno,int &due)
{ return uno+due; }
vado a compilare e mi da:
error LNK2019:riferimento al simbolo esterno _xyz@8
error LNK2019: riferimento al simbolo esterno _Dimensione_Variabile1@4
pensando che fosse un problema di intestazioni.
ho anche provato a levare l'intestazione al file 1
e il compilatore mi ha restituito:
dimevar1.cpp(14): fatal error C1010: fine file imprevista durante la ricerca dell'intestazione precompilata. Si è omesso di aggiungere '#include "stdafx.h"' all'origine?
ho persino provato
a metterlo in un include esterno con un altra estenzione
e mi ha dato in compilazione
xyzc.xxx(3): error C2373: 'xyz': ridefinizione. Modificatori di tipo differenti.
qualcuno saprebbe spiegarmi questo comportamento del visual c++ e naturalmente come risolverlo.
rigrazio anticipatamente tutti