I don't want to edit any FWH files, or any harbour files either for that matter. I'm just trying to get a valid build and there are some things in the way.
All the headers in question have appropriate paths to them. I can compile anything and everything I wrote, it is only a few files in fwh causing me issues.
Without #include "CStruct.ch"
Compiling 'classes\twebcam.prg'...
classes\twebcam.prg(200) Warning W0001 Ambiguous reference 'DWORD'
classes\twebcam.prg(201) Warning W0001 Ambiguous reference 'BOOL'
classes\twebcam.prg(202) Warning W0001 Ambiguous reference '_INT'
classes\twebcam.prg(203) Warning W0001 Ambiguous reference 'BOOL'
classes\twebcam.prg(204) Warning W0001 Ambiguous reference 'DWORD'
...
With #include "CStruct.ch" i get an ambiguous references, as folllows for example:
Compiling 'classes\reg32.prg'...
classes\reg32.prg(129) Warning W0001 Ambiguous reference 'DWORD'
classes\reg32.prg(201) Warning W0001 Ambiguous reference 'DWORD'
or
Compiling 'classes\twebcam.prg'...
classes\twebcam.prg(267) Warning W0001 Ambiguous reference 'STRING'
Where that latter line errors occur on lines as follows:
MEMBER oXYScroll AS STRING LEN 8
I looked for where DWORD is defined and found it in wintypes.ch, but then found that wintypes.ch itself includes cstruct.ch, so I removed the reference to cstruct.ch and added wintypes.ch and cleared all errors in this regard, with the exception of one type,
Compiling 'classes\twebcam.prg'...
classes\twebcam.prg(267) Warning W0001 Ambiguous reference 'STRING'
This one appears to me to be a conflict between FWH and harbour.
Fivewin includes this in struct.ch as follows:
xcommand MEMBER <cName> AS <type> ;
[ LEN <nLen> ] ;
[ INIT <uValue> ] ;
=> ;
ThisStruct():AddMember( <(cName)>, <type>, <nLen> ) ;
[ ; ThisStruct():SetMember( Len( ThisStruct():aMembers ), <uValue> ) ]
harbour defines it in cstruct.ch as:
xcommand MEMBER <!elem!> AS <!stru!> => ;
hb_Member( #<elem>, hb_CStructureId( #<stru>, .F. ) )
I don't see this as a problem problem in my code when I use the prebuilt fwh libraries you provide, but I don't use anything that uses this member syntax. It seems to me that including "wintypes.ch" is the correct way to resolve the ambiguous references, but that introduces CStruct.ch which in turn seems to bring in the conflict noted above. If there is another more proper header to use for building fwh I'll be happy to switch to that.
I also note that FWH itself redefines DWORD a itself, not sure the ramifications of that, if any.
---------- DLL.CH
#define DWORD 12