Page 1 of 2

Which C compiler and which Harbour should be used for FW?

Posted: Mon Jun 22, 2020 12:54 pm
by FWExplorer
Hi,

I saw references to Borland 7, in the FW batch files. Should I download that? I've been using BC5 for most Harbour development, but tried to work with Mingw (with Mingw, I kept getting various missing libraries & such).

Which Harbour version? I think there's an HB 5.3, but I've been using 5.2.

Can someone provide links to the recommended tools, for FW development?

Re: Which C compiler and which Harbour should be used for FW?

Posted: Mon Jun 22, 2020 1:36 pm
by Rick Lipkin
Whether you use Harbour or xHarbour is a personal choice .. Here are two excellant links to find the latest compilers and libraries .. http://whosaway.com/ has both versions Harbour and xHarbour binaries .. I believe you will have to register your IP address with whosaway.com

http://xharbour.org/index.asp?page=down ... naries_win

http://whosaway.com/

In the fivewin\samples folder you will find the compile and link batch files and lots of good examples of FiveWin programs

Buildx.bat is for xHarbour
Build.bat is for Harbour

Cristobal has a very fine IDE you can download as well:
https://bitbucket.org/fivetech/fivewin- ... IVEDIT.EXE

Also
https://bitbucket.org/fivetech/fivewin- ... downloads/
xMate is a good IDE as well .. you will from it in /downloads

Resedit is a good resource editor
http://www.resedit.net/

Rick Lipkin

Re: Which C compiler and which Harbour should be used for FW?

Posted: Mon Jun 22, 2020 1:39 pm
by Antonio Linares
D.

We do recommend Microsoft Visual Studio Community 2019 as it is a great set of tools from Microsoft and work great with Harbour and FWH:
https://visualstudio.microsoft.com/

If you prefer to use Borland, then we do recommend bcc7. You can directly download it from Embarcadero.

You may select the right Harbour version to use from here:
http://forums.fivetechsupport.com/viewt ... 16&t=37147
http://forums.fivetechsupport.com/viewt ... 16&t=37148

You can also use MinGW for Windows. FWH supports the most recent versions.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Mon Jun 22, 2020 1:46 pm
by FWExplorer
Thanks Antonio and Rich,

I just found out (after starting the thread) that the FTDN distribution includes links to the latest Harbour and Borland tools. So I'm all set on that, for now.

So the only question is what C Compiler to use. You're saying (Antonio) that your preferred compiler is VS 2019 ; I think I have that, but generally try to avoid dealing with Microsoft. But I'll keep an open mind, and give it a try.

T & R,

FWExp.

Antonio Linares wrote:D.

We do recommend Microsoft Visual Studio Community 2019 as it is a great set of tools from Microsoft and work great with Harbour and FWH:
https://visualstudio.microsoft.com/

If you prefer to use Borland, then we do recommend bcc7. You can directly download it from Embarcadero.

You may select the right Harbour version to use from here:
http://forums.fivetechsupport.com/viewt ... 16&t=37147
http://forums.fivetechsupport.com/viewt ... 16&t=37148

You can also use MinGW for Windows. FWH supports the most recent versions.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Mon Jun 22, 2020 1:55 pm
by Rick Lipkin
Microsoft visual Studio is a good IDE as Antonio mentions .. however, you can just download the MSVC c++ compiler from http://whosaway.com/ and you can use BuildHM.bat or BuildXM.bat in the fivewin\samples folder.

For a new FW user .. I would look at the IDE's

Microsoft VS
FiveEdit
xMate

Rick Lipkin

Re: Which C compiler and which Harbour should be used for FW?

Posted: Tue Jun 23, 2020 11:32 am
by FWExplorer
Huh. Xmate is still around? I remember it from way back.

Rick Lipkin wrote:Microsoft visual Studio is a good IDE as Antonio mentions .. however, you can just download the MSVC c++ compiler from http://whosaway.com/ and you can use BuildHM.bat or BuildXM.bat in
the fivewin\samples folder.

For a new FW user .. I would look at the IDE's

Microsoft VS
FiveEdit
xMate

Rick Lipkin

Re: Which C compiler and which Harbour should be used for FW?

Posted: Tue Jun 23, 2020 11:37 am
by Antonio Linares
FivEdit is very friendly, free and developed by the FiveTech team:

https://bitbucket.org/fivetech/fivewin- ... IVEDIT.EXE

Re: Which C compiler and which Harbour should be used for FW?

Posted: Wed Jun 24, 2020 4:27 pm
by TimStone
For many years, I have used Microsoft Visual Studio + Harbour + FWH. I have always been pleased. I also have an older version of the commercial xHarbour.

All of my work is done with the Microsoft build for a simple reason. My clients all use Windows, and no other product is designed to be 100% compatible with the current OS. Visual Studio is constantly updated and provides for every feature in WIndows development. Some options are simply not available with other compilers. For example, a few years ago, we wanted a photo taking option in our product. Antonio quickly made it happen with the ability to use capabilities supplied in Visual Studio. No other tools supported it, but my clients have had the benefit of using it now for several years.

I do my editing in Ultra Edit Studio, and my builds for distribution are created with a make file called from UES. However, for testing, I have the program setup in Visual Studio. So, the process is simple: Edit in UES, then click on the build option in VS which compiles changed files, links, and starts the program. It is so fast and easy.

Thankfully we have options, but I prefer this one. It works, it's easy to use, there is no cost for the Visual Studio, There are also options. You can work 100% in Visual Studio, and even have it use your preferred editor. Updates are steady, and apply automatically in VS, so you never lose time reconfiguring.

Tim

Re: Which C compiler and which Harbour should be used for FW?

Posted: Fri Jul 31, 2020 1:01 pm
by Eroni
TimStone wrote:For many years, I have used Microsoft Visual Studio + Harbour + FWH. I have always been pleased. I also have an older version of the commercial xHarbour.

All of my work is done with the Microsoft build for a simple reason. My clients all use Windows, and no other product is designed to be 100% compatible with the current OS. Visual Studio is constantly updated and provides for every feature in WIndows development. Some options are simply not available with other compilers. For example, a few years ago, we wanted a photo taking option in our product. Antonio quickly made it happen with the ability to use capabilities supplied in Visual Studio. No other tools supported it, but my clients have had the benefit of using it now for several years.

I do my editing in Ultra Edit Studio, and my builds for distribution are created with a make file called from UES. However, for testing, I have the program setup in Visual Studio. So, the process is simple: Edit in UES, then click on the build option in VS which compiles changed files, links, and starts the program. It is so fast and easy.

Thankfully we have options, but I prefer this one. It works, it's easy to use, there is no cost for the Visual Studio, There are also options. You can work 100% in Visual Studio, and even have it use your preferred editor. Updates are steady, and apply automatically in VS, so you never lose time reconfiguring.

Tim
Hi Tim
I've been thinking about migrating to MSVC for a long time, and this text of yours inspired me a lot, I would like to know more details about your environment, do you use the MSVC IDE? I started MSVC 2017 about a year ago for small mobile applications, and I would like to migrate my project in xHarbour to this environment. My current project (over 30 years old) has 654 PRG, use BCC74 and xHarbour123. My idea is to switch to MSVC and Harbour32. Could you help me find more information on how to compile? Thank you in advance.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Fri Jul 31, 2020 7:22 pm
by TimStone
I use the following:
+ FiveWin
+ Microsoft Visual Studio 2019
+ Ultra Edit Studio
+ Harbour

Here is how I work with it. I use UE Studio for all of my editing. It's certainly not the only option, but it works well for me.

My project is also loaded into Visual Studio. When I make edits to the UES code, and save it, then I do a quick build with Visual Studio ( one button click ) to test my work.

When I'm ready to do a release of the application ( usually an update ), I have a button in UES that executes a batch file, setting the environment, and then it executes the .mak file. It's fast, and another button will move the build to the distribution folder.

There are many options available. You could distribute what you build in MSVS, and you can even incorporate your editor into the Visual Studio interface. YAs Antonio said, there is a constantly evolving editor on this forum that is designed for FW and many people use it.

I would suggest you start by downloading Visual Studio 2019 Community. It is free. I use it because it is the most tightly intertwined with Windows 10 which is what all my clients have on their systems. I believe the setup info is still available in the FWH files, but if not, feel free to email me and I'll send over specific guidance. Once you have it setup you can try a build and see what happens with your existing code. If you are using BCC proprietary controls, those will need to be changed.

The FWH libraries are automatically part of your download, and the Harbour build for MSVC is also available on the FTDN download page.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Sat Aug 01, 2020 8:39 pm
by Eroni
Tim,
I greatly appreciate your response. As I have some projects at MSVC 2017, I will first download MSVC 2019 and migrate my small C # projects to it. Then I will start working on migrating my project from xHarbour to MSVC, testing some code editors and putting together a compilation. I am posting my evolution in this process, if I need more help I will make contact. Again, grateful for your attention.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Sun Aug 02, 2020 12:25 am
by TimStone
For anyone interested in working with Visual Studio, here is a link to a detailed previous discussion. Please note it has a link to Antonio's early work on how to setup Visual Studio to work with FWH. Though it's an earlier version of VS, it is still appropriate today.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Sat Aug 22, 2020 3:21 pm
by Eroni
Hello everyone.
Posting my progress on migrating to MSVC, I first decided to learn about generating the project build.
Starting from the example in the folder fw \ makes I managed to build my first executable in MSVC 2019 written in .prg. The most important step was to correctly locate the necessary files, in my case:

Harbour folder: HBDIR = D: \ Tools \ Harbour32MSVC2017
FiveWin folder: FWDIR = D: \ Tools \ FWH1709
Compiler folder C: VCDIR = C: \ "Program Files (x86) \ Microsoft Visual Studio" \ 2019 \ Community \ VC \ Tools \ MSVC \ 14.26.28801 \ bin \ Hostx86 \ x86
Include C folder: VCDIRINC = "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ VC \ Tools \ MSVC \ 14.26.28801 \ include"
SDK folder: SDKDIR = "C: \ Program Files (x86) \ Windows Kits \ 10 \ Lib \ 10.0.18362.0 \ um \ x86"
SDK include folder: SDKDIRINC = "C: \ Program Files (x86) \ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ um"
RC compiler folder: RCDIR = "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86"

Modifying the test.mak file I generated the executable successfully, however, to adapt to my project, I need to change the structure of the folders:
Source files: folder. \ Source
.C and .obj files: \ obj folder

When making this change, I was no longer able to generate the exe, looking at the log files, I realized that the .obj files are not being located correctly.

Makefile:

Code: Select all

HBDIR=D:\Tools\Harbour32MSVC2017
FWDIR=D:\Tools\FWH1709
VCDIR=C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Community\VC\Tools\MSVC\14.26.28801\bin\Hostx86\x86
VCDIRINC="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include"
SDKDIR="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x86"
SDKDIRINC="C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um"
RCDIR="C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86"

.SUFFIXES: .PRG .C .OBJ .RC .RES

PRG =       \
source\one.PRG      \
source\two.PRG      \
source\three.PRG 
#place here as many PRGs as needed

OBJ=$(PRG:.PRG=.OBJ)
OBJS=$(OBJ:.\=.\obj\)

PROJECT: ONE.EXE

one.exe : $(OBJS) one.res
   echo $(OBJS) > msvc.tmp
   echo $(FWDIR)\lib\FiveH32.lib $(FWDIR)\lib\FiveHC32.lib >> msvc.tmp
   echo $(HBDIR)\lib\hbrtl.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbvm.lib  >> msvc.tmp
   echo $(HBDIR)\lib\gtgui.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hblang.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbmacro.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbrdd.lib  >> msvc.tmp
   echo $(HBDIR)\lib\rddntx.lib  >> msvc.tmp
   echo $(HBDIR)\lib\rddcdx.lib  >> msvc.tmp
   echo $(HBDIR)\lib\rddfpt.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbsix.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbdebug.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbcommon.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbpp.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbcpage.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbwin.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbcplr.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbpcre.lib >> msvc.tmp
   echo $(HBDIR)\lib\hbct.lib  >> msvc.tmp
   echo $(HBDIR)\lib\xhb.lib  >> msvc.tmp
   echo $(HBDIR)\lib\png.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbzlib.lib  >> msvc.tmp
   echo $(HBDIR)\lib\hbziparc.lib >> msvc.tmp
   echo $(HBDIR)\lib\hbmzip.lib >> msvc.tmp
   echo $(HBDIR)\lib\minizip.lib >> msvc.tmp
   echo $(HBDIR)\lib\hbtip.lib >> msvc.tmp
   echo $(HBDIR)\lib\hbzebra.lib >> msvc.tmp

   echo $(SDKDIR)\kernel32.lib  >> msvc.tmp
   echo $(SDKDIR)\user32.lib    >> msvc.tmp
   echo $(SDKDIR)\gdi32.lib     >> msvc.tmp
   echo $(SDKDIR)\winspool.lib  >> msvc.tmp
   echo $(SDKDIR)\comctl32.lib  >> msvc.tmp
   echo $(SDKDIR)\comdlg32.lib  >> msvc.tmp
   echo $(SDKDIR)\advapi32.lib  >> msvc.tmp
   echo $(SDKDIR)\shell32.lib   >> msvc.tmp
   echo $(SDKDIR)\ole32.lib     >> msvc.tmp
   echo $(SDKDIR)\oleaut32.lib  >> msvc.tmp
   echo $(SDKDIR)\uuid.lib      >> msvc.tmp
   echo $(SDKDIR)\odbc32.lib    >> msvc.tmp
   echo $(SDKDIR)\odbccp32.lib  >> msvc.tmp
   echo $(SDKDIR)\iphlpapi.lib  >> msvc.tmp
   echo $(SDKDIR)\mpr.lib       >> msvc.tmp
   echo $(SDKDIR)\version.lib   >> msvc.tmp
   echo $(SDKDIR)\wsock32.lib   >> msvc.tmp
   echo $(SDKDIR)\msimg32.lib   >> msvc.tmp
   echo $(SDKDIR)\oledlg.lib    >> msvc.tmp
   echo $(SDKDIR)\psapi.lib     >> msvc.tmp
   echo $(SDKDIR)\gdiplus.lib   >> msvc.tmp
   echo $(SDKDIR)\winmm.lib     >> msvc.tmp

   IF EXIST one.res echo one.res >> msvc.tmp

   $(VCDIR)\link @msvc.tmp /out:One.exe /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:msvcrt > link.log
   @type link.log

one.res : one.rc
   $(RCDIR)\rc.exe -r -d__FLAT__ one.rc 

.PRG.OBJ:
  $(HBDIR)\bin\harbour $< /n /w /Oobj\ /i$(FWDIR)\include;$(HBDIR)\include 
  $(VCDIR)\cl.exe -TP -W3 -c /GS- /I$(HBDIR)\include /GA -Foobj\ obj\*.c
 
Part of compiler.log file error:

Code: Select all

one.c
three.c
two.c
Gerando C¢digo...
    echo source\one.OBJ      source\two.OBJ      source\three.OBJ > msvc.tmp
    echo D:\Tools\FWH1709\lib\FiveH32.lib D:\Tools\FWH1709\lib\FiveHC32.lib >> msvc.tmp
    echo D:\Tools\Harbour32MSVC2017\lib\hbrtl.lib  >> msvc.tmp
    echo D:\Tools\Harbour32MSVC2017\lib\hbvm.lib  >> msvc.tmp
    echo D:\Tools\Harbour32MSVC2017\lib\gtgui.lib  >> msvc.tmp
 
Problem is here: "echo source\one.OBJ source\two.OBJ source\three.OBJ > msvc.tmp"

Would anyone know how to fix this?

Thankful in advance.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Sat Aug 22, 2020 4:55 pm
by TimStone
Please email me directly with your question. I have been on vacation and don't look closely at the forum but I respond to emails immediately. I can answer your questions and send some examples. tim at gtstone period com or timstone at masterlinksoftware period com. I'm happy to help.

Re: Which C compiler and which Harbour should be used for FW?

Posted: Mon Aug 31, 2020 6:18 pm
by Eroni
Hello everyone.
I managed to generate an executable and also a library using MSVC to use in my projects. Thanks again Tim.
The next step now is to migrate my main software, which has many sources that will need some minor modifications because of some functions that exist only in xHarbour, such as GLOBAL variables, operators (IN). I believe that it would be better to work this within the Visual Studio environment. Suggestions are very welcome.