Probleme beim Compilen unter VC6
-
Hallo Leute
Ich habe folgendes Problem:
tabctrl.cpp(105) : error C2664: 'CreateDialogParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
None of the functions with this name in scope match the target typetabctrl.cpp(109) : error C2065: 'SetWindowLongPtr' : undeclared identifier
tabctrl.cpp(109) : error C2065: 'DWLP_USER' : undeclared identifier
tabctrl.cpp(109) : error C2065: 'LONG_PTR' : undeclared identifier
tabctrl.cpp(109) : error C2146: syntax error : missing ')' before identifier 'phDlg'
tabctrl.cpp(109) : error C2059: syntax error : ')'
tabctrl.cpp(132) : error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
None of the functions with this name in scope match the target type
Error executing cl.exe.beim erstellen meines Programms. Unter VS2003 funktioniert es tadellos.
Hier der Link zum Projekt an sich
(Ich muss das ganze Projekt mitschicken, da Ressource-Dateien verwendet werden.)
www.slin-online.de/pascal/projekt.rar
SetWindowLongPtr ist beispielsweise eine Funktion, die laut MSDN in Winuser.h deklariert wurde und über windows.h eingebunden wird, was ja auch passiert ist. Trotzdem gibt der Compiler Fehler aus. Wie gesagt, unter VS2003 funktioniert das Compilen ohne Fehler, nur VC6 meckert.
Bin für Hilfe sehr dankbar
Grüße
Salgmachine
-
ich gehe mal davon aus das du zwei verschiende include und lib verzeichniss benutzt.
psdk für vc6.0 installiert?
in winuser.h funktion gefunden? evtl. durch eine präprozessordirektive nicht gesetzt worden
-
Ich habe ein PSDK installiert, das für Windows XP, 2000 etc. (also das ganz normale) gibt es denn ein "extra" SDK für vc6 ?
Ja ich benutze unterschiedliche Verzeichnisse, jeweils die programmeigenen.
Laut MSDN wurde die Funktion in der winuser.h deklariert. Hatte die auch schonmal eingebunden, brachte mich aber nicht weiter.
-
salgmachine schrieb:
gibt es denn ein "extra" SDK für vc6 ?
siehe winapi forum
salgmachine schrieb:
Laut MSDN wurde die Funktion in der winuser.h deklariert. Hatte die auch schonmal eingebunden, brachte mich aber nicht weiter.
winuser.h aufmachen und überprüfen ob evtl. eine #define dort ist das du nicht erfüllst etc etc....
salgmachine schrieb:
Hatte die auch schonmal eingebunden, brachte mich aber nicht weiter.
normal nicht notwendig das diese von windows.h inkludiert wird, siehe dazu auch die msdn
-
ich hab jetzt mal in der winuser.h von vc6 geschaut... also SetWindowLongPtr, DWLP_LONG usw stehen da gar nicht drin. Ich hab mal noch den Pfad zu den Header-files von vs2003 eingebunden, funktioniert aber nicht.
-
Stehen die Pfade zum psdk auch in der Konfig vom vc6 und auch über den standard-einträgen ?
Sonst nimmt er die vom vc6 und nicht die vom platform sdk....und in der winuser.h im platformsdk/include/ Verzeichnis steht SetWindowLongPtr() definitiv drin.
...und nicht vergessen WINVER und _WIN32_WINNT vor dem "include" zu definieren!
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/using_the_windows_headers.asp
-
hab den pfad zum include-verzeichnis vom PSDK jetzt an erste Stelle gesetzt und siehe da: es geht. die Defines hab ich noch nicht gemacht (62 Compiler-Warnings *g*) (Was nun bedeutet dass ich darauf hoffen sollte, dass auf unseren Schul-Rechnern das PSDK installiert ist, da ich dort compilen wohl sonst vergessen kann, es sei denn ich liefere die header-files mit....was eigentlich auch ne idee ist.)
Danke für die Hilfe, meld mich sobald ich 0 Warnings hab
Frohe Weihnachten ^^
-
hm..ok also mit den defines werden es auch nicht weniger warnungen. Die Meldungen sehen nach wie vor nach Problemen mit den libs o.ä. aus:
Beispiel
c:\visual studio 6\vc98\include\xlocale(207) : warning C4244: '=' : conversion from 'unsigned int' to 'char', possible loss of data
c:\visual studio 6\vc98\include\xlocnum(151) : see reference to function template instantiation 'int __cdecl std::_Getloctxt(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class std::istreambuf_iter
ator<unsigned short,struct std::char_traits<unsigned short> > &,unsigned int,const unsigned short *)' being compiled
-
Thread kann geschlossen werden. Problem anderweitig gelöst.