Jag har skrivit ett program i Windows där det fnugera utan problem. Nu har jag lagt över det i Linux (med EntireX) och har fått ett märkligt problem med en returparameter. Funktionen ser ut så här: Det har jag aldrig hört skulle vara ett problem. Aj då, nu vet jag vad som var fel. Ja, då var det inte så konstigt... Ne, men man börja ju undra när variablerna helt plötsligt byte värde under stegningen av programmet. :-)Returparameter i funktion fungera konstigt i Linux
long Device_MEA::getRealtimeData(string itemid, OPCITEMVQT &pValue)
där OPCITEMCQT ser ut så här:
typedef struct tagOPCITEMVQT
{
VARIANT vDataValue;
BOOL bQualitySpecified;
WORD wQuality;
WORD wReserved;
BOOL bTimeStampSpecified;
DWORD dwReserved;
FILETIME ftTimeStamp;
} OPCITEMVQT;
Det är meningen att funktionen ska returnera data i parametern pValue men den anropande funktionen får mara massa nonsendata (som är likadan vid varje anrop). Jag fattar ingenting och jag undra om det finns något problem med att använda referenser på detta viset i Linux?
ps: EntireX innehåller stor del av Windows SDK vilket gör det möjligt att kompilera Windows-program (vilket är syfftet med hela uppdraget).Sv: Returparameter i funktion fungera konstigt i Linux
Vad använder du för kompilator?
Kan du visa hela (eller åtminstone större delar) av koden för getRealtimeData()?Sv: Returparameter i funktion fungera konstigt i Linux
VARIANT i Windows är 40 byte stor medan den i EntireX är 52 byte stor. Några av lib-filerna är kompilerade med Windows-varianten av VARIANT och några med EntireX-varianten, så det blev helt fel när en funktion i den ena liben anropade funktionen som låg i en EntireX-kompilerad lib-fil. Sv: Returparameter i funktion fungera konstigt i Linux
Tur att det inte var Linux' fel... Men det trodde man ju inte heller...Sv: Returparameter i funktion fungera konstigt i Linux