Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Author |
Message |
Max Ra #1 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
In Programers Guide: CHAPTER 12 MULTI-LANGUAGE PROGRAMMING 293 Overview TopSpeed has both 16-bit and 32-bit (when released) C++ and Modula-2 compilers that can integrate into the Clarion for Windows environment. Additionally, 16-bit C and Pascal compilers are also available.The 16-bit compilers generate object code targeted at traditional Windows installations (3.1 and 3.11), while the 32-bit compilers generate object code for the Windows 95 and Windows NT environments. You must be running your development environment under a 32-bit environment to generate applications for a 32-bit environment. Where this copmilers?
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Alexey Solovje #2 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Hello!
Date: 31 Dec 1996 00:31:26 GMT Quote: > Where this copmilers?
They will be available for extra charge. Also, compilers' modules (without headers, libraries, etc.) were in CW 2.0 betas - except Pascal compiler because Pascal is died. Alexey Solovjev
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Max Ra #3 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
But where get this compiler's modules (also C++)?
Quote: > Hello!
> Date: 31 Dec 1996 00:31:26 GMT > > Where this copmilers? > They will be available for extra charge. Also, compilers' modules > (without headers, libraries, etc.) were in CW 2.0 betas - except > Pascal compiler because Pascal is died. > Alexey Solovjev
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Max Ra #4 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
But where get this compiler's modules (also C++)?
Quote: > Hello!
> Date: 31 Dec 1996 00:31:26 GMT > > Where this copmilers? > They will be available for extra charge. Also, compilers' modules > (without headers, libraries, etc.) were in CW 2.0 betas - except > Pascal compiler because Pascal is died. > Alexey Solovjev
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
tre.. #5 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Quote:
>In Programers Guide: >TopSpeed has both 16-bit and 32-bit (when released) C++ and Modula-2 >compilers that can integrate into the Clarion for Windows environment. >Where this copmilers?
AFAIK, TopSpeed sells those separately. I'd like to know what they mean by "integrate into [] Clarion."
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Alexey Solovje #6 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Hello!
Date: 31 Dec 1996 01:46:39 GMT Quote: > But where get this compiler's modules (also C++)?
Ask in Arsis. Alexey Solovjev
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Max Ra #7 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
I think, what Clarion environment know about this compiler's extension, but PE 2002 don't have modules (cw2cpp16.dll, cw2m216.dll, cw2pas16.dll).
Quote:
> >In Programers Guide: > >TopSpeed has both 16-bit and 32-bit (when released) C++ and Modula-2 > >compilers that can integrate into the Clarion for Windows environment. > >Where this copmilers? > AFAIK, TopSpeed sells those separately. > I'd like to know what they mean by "integrate into [] Clarion."
|
Sat, 19 Jun 1999 03:00:00 GMT |
|
 |
Robert Linder #8 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Quote: > I think, what Clarion environment know about this compiler's extension, but > PE 2002 don't have modules (cw2cpp16.dll, cw2m216.dll, cw2pas16.dll).
> > >In Programers Guide: > > >TopSpeed has both 16-bit and 32-bit (when released) C++ and Modula-2 > > >compilers that can integrate into the Clarion for Windows environment. > > >Where this copmilers? > > AFAIK, TopSpeed sells those separately. > > I'd like to know what they mean by "integrate into [] Clarion."
I used TopSpeed C++ for a while (appr. a $200 charge) I understand those compilers are no priority with the TopSpeed Corporation. However, TopSpeed C++ works fine at the 16 bit level but the version I tested crashed several times as a 32 bit program. With the GREAT (!) 32 bit de{*filter*} I found that: C++32 will set all parameters backwards (this you can work around, reverse your parameters), C++32 insert wrong stack instructions when using Win95 API calls (solution?). I got a refund without any repons to my reported bugs. Happy New Year, Robert Linders -- +-----------------------------------------------------+ | Robert J. Linders, The Mug Snugglers Corp. | | Orlando Florida, ph: 1-888-MugSnug | | fax: 1-407-273-1871 |
+-----------------------------------------------------+
|
Sun, 20 Jun 1999 03:00:00 GMT |
|
 |
Max Ra #9 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Quote: > > I think, what Clarion environment know about this compiler's extension, but > > PE 2002 don't have modules (cw2cpp16.dll, cw2m216.dll, cw2pas16.dll).
Quote:
> > > >In Programers Guide: > > > >TopSpeed has both 16-bit and 32-bit (when released) C++ and Modula-2 > > > >compilers that can integrate into the Clarion for Windows environment. > > > >Where this copmilers? > > > AFAIK, TopSpeed sells those separately. > > > I'd like to know what they mean by "integrate into [] Clarion." > I used TopSpeed C++ for a while (appr. a $200 charge) I understand those > compilers are no priority with the TopSpeed Corporation. > However, TopSpeed C++ works fine at the 16 bit level but the version I > tested crashed several times as a 32 bit program. > With the GREAT (!) 32 bit de{*filter*} I found that: > C++32 will set all parameters backwards (this you can work around, > reverse your parameters), > C++32 insert wrong stack instructions when using Win95 API calls > (solution?).
Order of setting parameters and type of stack conditions maybe changed by #pragma instruction. Examples: #pragma call(c_conv => on | off) When on, this option enables the Microsoft C calling convention. In this convention, the compiler pushes function parameters in right to left order on the stack and the caller pops these parameters off the stack. Quote: > I got a refund without any repons to my reported bugs. > Happy New Year, > Robert Linders > -- > +-----------------------------------------------------+ > | Robert J. Linders, The Mug Snugglers Corp. | > | Orlando Florida, ph: 1-888-MugSnug | > | fax: 1-407-273-1871 |
> +-----------------------------------------------------+
|
Sun, 20 Jun 1999 03:00:00 GMT |
|
 |
Alexey Solovje #10 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Hello!
Date: 31 Dec 1996 22:44:24 GMT Quote: > I think, what Clarion environment know about this compiler's extension, but > PE 2002 don't have modules (cw2cpp16.dll, cw2m216.dll, cw2pas16.dll).
Yes. The CW make system has all required information to use other TS compilers if you have them. But these compilers are not distributing as a part of CW. Alexey Solovjev
|
Mon, 21 Jun 1999 03:00:00 GMT |
|
 |
Alexey Solovje #11 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Hello!
Date: Wed, 01 Jan 1997 12:22:19 -0500 Quote: > I used TopSpeed C++ for a while (appr. a $200 charge) I understand those > compilers are no priority with the TopSpeed Corporation. > However, TopSpeed C++ works fine at the 16 bit level but the version I > tested crashed several times as a 32 bit program. > With the GREAT (!) 32 bit de{*filter*} I found that: > C++32 will set all parameters backwards (this you can work around, > reverse your parameters), C++32 insert wrong stack instructions when > using Win95 API calls (solution?).
Most modules of the CW 32-bit run-time library are compiled with C++ compiler. So, your problems are not provoked by compiler. In the 32-bit mode the order of PUSHing parameters to stack for pascal calling convention is reverse in comparison with 16-bit mode. See a small example: === CPP.CLW PROGRAM MAP MODULE('WIN%S%.LIB') lstrcpy (*CSTRING,*CSTRING),CSTRING,RAW,PROC,PASCAL,NAME('LSTRCPY') END MODULE('CPY.CPP') cpy (*CSTRING,*CSTRING),CSTRING,RAW,PROC,NAME('_cpy') END END Src CSTRING('Test for 32 bit') Dest CSTRING(30) CODE Dest = '*************' lstrcpy (Dest, Src) MESSAGE (Dest) Dest = '*************' cpy (Dest, Src) MESSAGE (Dest) === CPY.CPP extern "C" { char * pascal lstrcpy (char *, char *); char * cpy (char *, char *); Quote: };
char * cpy (char * _dest, char * _src) { return lstrcpy (_dest, _src); Quote: };
=== CPY.PRJ -- #noedit #system win32 #model clarion dll #pragma debug(vid=>min) #pragma debug(line_num=>on) #compile cpp.clw #compile cpy.cpp #link cpp.exe === Dis-assembler of lstrcpy call in CPP.CLW PUSH OFFSET $SRC PUSH OFFSET $DEST CALL LSTRCPY === Dis-assembler of lstrcpy call in CPY.CPP (* Registers settings before _cpy call: MOV eax,OFFSET $DEST MOV ebx,OFFSET $SRC *) PUSH ebx PUSH eax CALL lstrcpy ======================= You can run this test and see that it works properly displaying 'Test for 32 bit' instead of asterisks. Also, you can see that the order of PUSH commands is right-to-left. Alexey Solovjev
|
Mon, 21 Jun 1999 03:00:00 GMT |
|
 |
Robert Linder #12 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Dear Max, Quote: > #pragma call(c_conv => on | off) > When on, this option enables the Microsoft C calling convention. In this > convention, the compiler pushes function parameters in right to left order > on > the stack and the caller pops these parameters off the stack.
I know, I tried this options and others (which should work the same for 16 bit and 32 bit). Keep in mind that the same program does work as a 16 bit program ! A procedure with only one parameter is all you can make (or use #ifdef to specify 2 different parameter lists for 16/32 bits, I tried this and that will work). The Win-API calls with faulty stack instructions was the main reason I quited using TopSpeed C++ as 32 bit program. By the way, using Microsoft 32 bit C++ (version 4.0 or higher) is hardly an improvement. MS used the COFF object format and Topspeed/clarion the OMF object format, and these two just won't mix !! The CW linker will tell you "unsupported record type 21" when you link to any object, dll or lib made with the MS compiler. Shoot, is it so much to ask to interface to a C++ language and keep the 32 bit advantage. Why is this only a problem to so few people ? -- +-----------------------------------------------------+ | Robert J. Linders, The Mug Snugglers Corp. | | Orlando Florida, ph: 1-888-MugSnug | | fax: 1-407-273-1871 |
+-----------------------------------------------------+
|
Mon, 21 Jun 1999 03:00:00 GMT |
|
 |
Mike Hans #13 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Quote: >By the way, using Microsoft 32 bit C++ (version 4.0 or higher) is hardly >an improvement. >MS used the COFF object format and Topspeed/clarion the OMF object >format, and these two just won't mix !! >The CW linker will tell you "unsupported record type 21" when you link >to any object, dll or lib made with the MS compiler. >Shoot, is it so much to ask to interface to a C++ language and keep the >32 bit advantage. >Why is this only a problem to so few people ?
Hi Robert! I just picked up a version of MS Visual C++ 4.0 to call CW from C++. Do you know if this will work? Can 4.0 do 16-bit code, or do I have to use 1.52? TIA. Catch you later! -=> Mike Hanson, BoxSoft <=-
|
Fri, 25 Jun 1999 03:00:00 GMT |
|
 |
Robert Linder #14 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Mike, you want to use a CW DLL or (static) LIB from within C++ ?? I know the linker will try to convert OMF in COFF, but try it with a small program first, let me know if you are succesfull. Quote:
> Hi Robert! I just picked up a version of MS Visual C++ 4.0 to call CW > from C++. Do you know if this will work? Can 4.0 do 16-bit code, or > do I have to use 1.52? TIA. > Catch you later! > -=> Mike Hanson, BoxSoft <=-
-- +-----------------------------------------------------+ | Robert J. Linders, The Mug Snugglers Corp. | | Orlando Florida, ph: 1-888-MugSnug | | fax: 1-407-273-1871 |
+-----------------------------------------------------+
|
Sun, 27 Jun 1999 03:00:00 GMT |
|
 |
Mike Hans #15 / 15
|
 Where compilers for CPP, MOD, PAS integrate into Clarion for Windows 2.0
Quote:
>Mike, you want to use a CW DLL or (static) LIB from within C++ ?? >I know the linker will try to convert OMF in COFF, but try it with a >small program first, let me know if you are succesfull.
One of my customers has a graphing module that they've created in CW (with a bunch of VBXs). They've got a C++ program that they want to enable for calls to the CW module. Currently, the CW module is 16-bit, while the C++ stuff is 32-bit. If possible, he wants to keep CW in 16-bit, which meant that we are doing DDE instead (just cold links, with the information passed through a temporary file). If I end up changing the CW side to 32-bit, then I'll try the linking stuff. If it was just a DLL incompatibility, then I could make the CW program a LIB (no DLL). If it's a LIB incompatibility, though, then I would be stuck. Catch you later! -=> Mike Hanson, BoxSoft <=-
|
Thu, 01 Jul 1999 03:00:00 GMT |
|
|
|