Visual FlagShip 7 and 8: Frequently Asked Support Questions |
(last revised 29-Nov-2022)
Note: General FAQs, screenshots and specs are available in vfs.html and
in faq_fs.html .
General technical/support/programming
FAQs are available in faqsupp.txt
covering FS4 and textual/terminal i/o mode of VFS6.
Q: Which
platforms are supported by FlagShip?
A: FlagShip
ports are available for 32-bit (and 64-bit) MS-Windows,
different Linux systems,
and nearly all commercial Unices.
The source code and data remain 100% compatible - you only need to recompile
on the target system.
Q: Is there a
free Test/Demo/Eval version of FlagShip available?
A: Yes, click
on /eval.html,
fill-in and submit. You will get free, fully working and supported FlagShip
version for a 30 days evaluation period. For prices of the licensed version,
see current price list starting
at EUR 220 (approx. US$ 260).
Q: Is FlagShip
professionally supported?
A: Of
course. Not even that: we grant 6 months free technical
support, see /support.html for
details and support terms. Simply address your request to
support@flagship.de,
we usually react promptly (within hours, not days).
Q: Can
I freely distribute my applications?
A: Yes,
FlagShip creates stand-alone, native executables. With the usual PRO
license, you may freely transfer or distribute your application
to your own conditions, there are no limitations nor run-time
fees.
For your convenience, there are scripts available (distribute.sh or
distribute.bat) to smoothly prepare your distribution. Applications
created by the Personal or Eval/Demo license can only be executed
on the same system where the FlagShip development package resides and hence cannot be distributed.
Q: Can
I use the FlagShip package on different computers or by different developers?
A: Our licensing policy
is per seat (i.e. per person), not
per machine. You may install the FlagShip development
package in your office and on your notebook or on workstation at home. But
same as with any other commercial software, you should not share one license/package
by different users (programmers). If you need so, discounted add-on
licenses are
available.
Please consider the license terms.
The by FlagShip produced executables are of course freely transferable
or distributable, see previous question.
Q: How
far is FlagShip compatible to Clipper?
A:
FlagShip is 100% (*) source and database compatible to
all Clipper versions, from Clipper '87 to 5.3. Since FlagShip has far more
features, you may see Clipper as a subset of FlagShip .
Also Clipper's NT2/CA3 Library is supported by FlagShip's FS2 Toolbox as far
as possible.
(*)
To avoid disputes: please don't understand the "100%" statement
absolutely, since nothing in IT is absolutely 100%, even Clipper is not 100%
compatible to other versions of itself.
Q: Can FlagShip compile my FoxPro sources?
A: Yes
for both DOS/Unix FoxBase and MS-FoxPro 2.5 to 2.6, when the -fox compiler
switch of FlagShip is used. You will need to export the FoxPro project to .prg
sources and databases to dBaseIII+ compatibility (or use special Fox RDD).
Since FoxPro syntax may differ heavy from standard xBase, and since FlagShip
is a true compiler (as opposite to interpreter), some commands and functions
are treated differently from Clipper and/or are user modifiable in the foxproapi.prg
source, or will need small adaption. See also .../include/stdfoxpro.fh and
appendix of fsman for additional details. To transfer .FRX and .FRT report
files to .PRG source, you may
use the frx2prg utility. The .FPT memo files are supported by FlagShip automatically.
Q: Can I use FoxPro .idx files in FlagShip?
A: No, you cannot. FlagShip indices are not compatible to FoxPro
(and vice versa), since FlagShip supports database and indices >> 2 GB and
has automatic integrity checking, hence has another index structure. You need to re-index them for
the first time by FlagShip using INDEX ON..TO.. (tech: for the FlagShip index structure
see dbfspecs.txt, for FoxPro's index structure see
this Microsoft docu). Further details are in the FlagShip on-line
manual (icon on your desktop) section LNG.9 and APP.
Q: Can
I use VersaSoft dBMAN databases and sources in FlagShip ?
A: Yes.
However, dBMAN uses two different kinds of databases:
either dBaseIII compatible, or proprietary. If you get run-time error
326 from FlagShip saying "the file has 0xED as
version code", it is in proprietary (CaneFire) format. In such
a case, convert/export the database to dBase/FlagShip compatible: at dBMAN command
prompt (CMD:), enter SET DB3 ON
; USE MYDATA ;
COPY ALL TO C:\MYEXPORT\MYDATA which creates
FlagShip compatible
MYDATA.DBF in the specified folder (you of course
should use your folder and file names. In
dBMAN, you may use only 8.3 file names, the
destination folder must exist, and it must differ from current folder).
Q: Can I use
Third Party Libraries ?
A: Yes,
you may use any 3rd party library available in source code
(.prg or .c) by re-compiling it with FlagShip.
You also may use any C library (.lib, .dll, .a, .so) when
created with the same C compiler you are using with FlagShip.
Native 16bit libs and objects (e.g. .LIB and .OBJ for DOS, Clipper
etc) are not applicable for 32bit (or 64bit) systems and can only be
used with FlagShip when you own the source.
If your special 3rd party library is available in object only (*.LIB),
contact the manufacturer for it FlagShip port, or check for alternatives
(e.g. the FS2
Toolbox, 3rd party
tools and RDDs for
Flagship etc, there is also Java Interface available),
see also next question. To access .DLL libraries, see below
Q: Parts
of my Clipper application is not available in .PRG source,
but in .OBJ and .LIB files only. What can I to do?
A: Native
libraries (.LIB) and object files (.OBJ) are usable explicitly with
the system compiled for (e.g. Clipper'87, Clipper 5.0, Clipper 5.2,
Clipper 5.3, etc.), they are generally not compatible with other
compilers (also Clipper libs are not usable with different Clipper version).
Not even that, Clipper's libs and objects are 16bit based, FlagShip creates
and uses 32bit (or 64bit) objects and libs, see also previous question.
Solution: in the standard FlagShip library, all Clipper functions
and Debugger are available, so avoid linking with CLIPPER.LIB and CLD.LIB. In
FlagShip's FS2 Toolbox, functions comparable to NT3.LIB or CT3.LIB or CT.LIB
are available. C-based 32bit libraries (for the same C compiler used by FlagShip)
are compatible to FlagShip too. For .cdx , .ntx or .mdx drivers, see RDDs for
FlagShip. For other 3rd party libraries and objects, you either will need the
source (.prg or .c, contact the manufacturer), or re-engineer the functionality.
Objects and libs created by Clipper may be re-engineered (decompiled) by
Valkyrie, then compile
the created .prg code by FlagShip -- but consider the copyright and license terms
of the original lib/obj manufacturer.
Q: Can I execute FlagShip application concurently
to Clipper / FoxPro / dBase?
A: You can concurrently
access FlagShip and DOS database applications in read-only mode. Since FlagShip supports databases and files greater than 2 GB,
it therefore uses different locking mechanism (even Clipper/Fox/dBase lockings are not compatible to each other). For this reason,
the concurrent modification of databases by FlagShip and Clipper (or FoxPro or other DOS database systems) will most probably corrupt
your database and indices. The only way to handle it concurrently, is to use DOS compatible database driver via add-on library,
see RDDs. You however can freely access and modify FlagShip applications
concurrently on Windows and Linux or Unix, since FlagShip locking is cross-compatible to other operating systems. And since DOS applications
are not supported by Windows8 nor by other Windows/64bit nor by other OS, best to recompile all of them by FlagShip to avoid problems - and to fit them for the future.
Q: Do you have
any how-to porting instruction ?
A: Yes,
please read section LNG.9.6 for Linux or LNG.9.7 for MS-Windows
in the on-line manual fsman (or in the PDF manual)
for step-by-step description. Additional info is available in <FlagShip_dir>/docu/how-to*
documents where the <FlagShip_dir> is your installation path.
Q: Suggested
programming editor compatible to DOS source ?
A: Nearly
any programmer's editor can use ISO8859 (or Windows 1250)
character set suitable for FlagShip's GUI mode.
For MS-DOS based
source, best to use programmer's editor supporting CP850 or CP437 encoding.
There are many of them available, for example:
• JEdit - free
for Windows, Linux and other OS, supports code folding
and .prg code highlighting, configurable. Set encoding by Utilities → Global
options → Encoding → IBM850
• Notepad++ - free
for Windows, supports code folding and code highlighting, configurable. Several encodings are supported.
• UltraEdit -
commercial for Windows and Linux, supports code folding and
configurable code highlighting. Set encoding by View → OEM charset
Nearly all other editors for Linux (like Kate, Gedit,
Nedit etc.) supports DOS source
by selecting font with embedded cp850 or cp437 encoding. To handle embedded
strings in DOS format properly, use SET SOURCE ASCII in
your application.
Q: Which input/output modes are supported by FlagShip ?
A: FlagShip has three different i/o engines for GUI, Terminal and Basic input and output. You may specify the required type at compilation/link time by -io=g, -io=t or -io=b switch. If nothing is given, a hybrid application is created and the i/o mode is determined at run-time either automatically or by the same switch in command-line parameter of your application. The use, advantages and differences of these different i/o modes is described in detail in fsman section LNG.5.3 and LNG.9.6-9.7
Q: After smoothly
re-compiling my Clipper (FoxPro) application to FlagShip, the screen output/coordinates do not match. Why?
A: In Terminal
i/o mode, the coordinates are same as in Clipper/Fox and the application should
behave equivalently. In GUI mode, FlagShip uses your default GUI font which
is usually proportional (the letter "X" is wider than "i" or
space). The easiest way is to use fixed font, i.e. specifying SET
FONT "courier" at the begin of your main (you may enclose
it in #ifdef FlagShip ... #endif to stay backward/cross compatible to Clipper).
Otherwise you may use pixels (the PIXEL clause) or calculate the column position
according to text width, e.g. by using the Strlen2col(), Strlen2pixel(), Strlen2space(),
Col2pixel() functions. You also may control the line height by using pixels,
decimal fractions of row() or re-define default settings from .../system/initio.prg.
For further details, refer to fsman section LNG.5.3, LNG.9.6-9.7, CMD
and FUN as well as the examples directory. Note: for Foxbase/FoxPro sources,
use the
-fox compiler switch, see above and fsman section FSC.1.3.
Q: Why are the
lines from @...BOX or @..TO or PC8-semi-graphics not displayed in GUI (graphic) mode ?
A: In GUI
mode, FlagShip use widgets (controls) for dialog classes like @..Get/Read,
Tbrowse(), Browse(), Achoice(), Alert() and so forth. Since these widgets usually
have own frames, the programmed output of lines and boxes is suppressed in
this i/o mode. You may enable it at any time by using SET
GUITRANSL command, see section LNG.1.2, LNG.5.3 and CMD.SET in fsman for
further details.
Q: Why
I cannot overwrite the @...GET output by @...SAY in GUI mode?
A: Since
this is
illegal, also in Clipper ;-) The
display should/need to be handled by the GET object
itself.
In textual mode, which has only one screen layer = the screen
buffer self, you of course can override this HW buffer and hence "tricking" the
object display. In GUI mode, the GET (same as many
other objects) uses "widgets" (aka
"controls" in Microsoft terminology) which you may see as small sub-windows
attached to your main user window and managing the sub-window handling by
itself. You therefore cannot overwrite the @..GET output
(widget) by @..SAY,
but need to handle it via the GET object.
The legal methods (before and during READ)
are either to modify the attached variable, or use GET object
methods like :Buffer, :Assign(), :Varput() etc., by WHEN or
VALID clause or by SET KEY function.
After READ or after CLEAR GETS, if you don't need the @..GET display
anymore, simply clear the output by @ y1,x1 CLEAR TO y2,x2
(or
CLEAR SCREEN or CLS)
and use the usual @..SAY thereafter.
This of course works in Clipper or textual i/o mode of VFS as well, see also
example getvalid*.prg in
your installed <FlagShip_dir>/examples directory.
You however may overlay the @..GET (as well as other widgets) by sub-windows,
for further information see FlagShip manual FS2.Wopen() and/or FUN.MDIopen()
.
Q: Why are the
lines from @...BOX or @..TO or PC8-semi-graphics displayed in Terminal
(textual) mode as ÄÄÄÄ ?
A: In Terminal i/o mode, FlagShip uses the standard Curses library to handle screen oriented input/output. In Unix/Linux the only requirement is, your environment TERM (or FSTERM) and TERMINFO (or FSTERMINFO) is set correctly, see sections FSC and REL in fsman for further details. You may preferably invoke your application via "newfswin ./a.out [-io=t]" script being in X11/KDE/Gnome (or "newfscons" or "newfsterm" for plain textual console or remote terminal respectively) which sets the environment for you automatically. In FlagShip for MS-Windows, you only need to set the Font in "Command Prompt Properties" window (by right mouse click) to one supporting PC8 character set, e.g. to Lucida Console.
Q: Why are my colors not displayed in GUI mode, while Terminal i/o is ok?
A: FlagShip follows the common GUI design rules which recommends to use colors very carefully. The heavy use of colors, common in textual applications, would look awful in GUI mode and is therefore disabled there by default. To use colors in GUI mode, either use the special GUICOLOR clause available in many commands like @..SAY, or enable it generally by SET
GUICOLORS ON. See further details in fsman section LNG.5.3 and CMD.
Q: Where is the
difference between ASCII, OEM and ISO, ANSI character set vs. Unicode?
A: Fundamentally,
computers just deal with numbers. They store letters and other characters by
assigning a number for each one. ASCII or ISO character set is stored in one byte (8 bits), hence can display 255 different
characters. Internalization is provided by different character
set (ISO) or by code pages in Windows. FlagShip supports different character
sets (default is PC-8 ASCII or ISO-8859-1), and provides an automatic conversion between
ASCII (OEM) and ISO (ANSI) charset, see details in the manual section LNG.5.4.
Unicode is the universal character encoding
standard used for representation of text for computer processing and
provides codes for 96,447 characters stored in
8, 16 or 32-bits.
The common UTF-8 Unicode
stores data in variable length encoding, where the lower 127 characters corresponds
to ASCII charset. Other (national) characters are converted (encoded) by the
software. FlagShip uses Unicode internally in GUI mode and ASCII/ISO in textual/basic
i/o mode, the .prg source and databases are handled and stored in ASCII (OEM)
or ISO (ANSI) mode, i.e. Unicode cannot be used for program sources, except for strings.
The Unicode input/output (in UTF-8 encoding) is supported in GUI by oApplic:
Q: Can I use my USB and/or network printer?
A: Yes, simply print via PrintGui() function, which let you select any installed printer driver in a dialog box, same as in any other Windows (or Linux) GUI application. See also examples/printergui.prg
Q: How to create PDF file?
A: The easiest way is to install PDF printer
driver (e.g. Bullzip PDF driver, DocuCom PDF
driver, PDFCreator, PDF24 Creator,
and many more) and
then print via PrintGui() selecting your PDF driver, see also above.
If you are using textual i/o mode or the simple SET PRINTER command, you may
convert the textual printer output to PDF via any text-to-pdf
convertor (e.g. free-pdf-perfect, some-pdf-creator, and
many more) which
you may invoke by the RUN command from your FlagShip application.
Q: Is FlagShip
compatible to RedHat and FedoraCore?
A: Yes for all versions of RH7, RH8 and RH9, RedHat Enterprise or Fedora Core (all versions).
Since these versions are not compatible to each other, there are different
VFS ports available, please see "Whats'
new" and the Linux.html page for the download link.
Q: Is FlagShip compatible to SuSE 7, 8, 9, 10 and 11?
A: Yes
for all versions, including the glibc-2.3 and gcc-3.2 based SuSE 8.2
or 9.x and SLES, as well as gcc 4.x based SuSE 10.x or 11.x. You may download it
here.
Q: Is FlagShip
compatible to other Linux distributions?
A: Yes for
all known current versions of Caldera, Mandrake (Mandriva), Conectiva, Debian,
Slackware, Ubuntu, Knoppix and so forth. You only need to select proper FlagShip
port corresponding to your Linux version.
Q: Is FlagShip
compatible to 64bit Linux?
A: Yes,
please click here for
further details.
Q: Can I run
FlagShip on FreeBSD?
A: Yes,
you can. But since there is no special FreeBSD port of FlagShip, you will
need to develop/compile your sources on Linux, link statically and then
execute it in your FreeBSD box. See additional details about the Linux compatibility
in the FreeBSD Handbook chapter 20 (linuxemu-lbc-install)
- or in the extract from available in OReilly's linuxapps .
Q: Where
to get Microsoft TrueType ttf fonts like Arial, Courier New, Veranda, Times Roman etc for Linux?
A:
You may install the msttcorefonts package from your distribution or download it from
sourceforge or refer to downloads for
Ubuntu, Debian or
SuSE or
Fedora. After installing
(usually available in /usr/share/fonts/truetype/msttcorefonts directory, refered here as <ttf_dir>),
you may need to invoke
cd <ttf_dir> ; sudo mkfontdir ; sudo mkfontscale ; sudo xset fp+ <ttf_dir> ; sudo xset fp rehash
You may list/check these fonts by "xlsfonts | less" or explicitly by "xlsfonts | grep -i arial" etc. This
setting remains active until next logoff or reboot. To add these fonts permanently to X11,
add the <ttf_dir> to section Files in /etc/X11/xorg.conf file to read e.g.
FontPath "/usr/share/fonts/truetype/msttcorefonts", thereafter invoke "sudo xset fp rehash".
You may then select the font by e.g. SET FONT "Arial",12 or SET FONT "Courier new",10 command in your FlagShip GUI application.
Q: With RH8/9/Fedora,
the PC8 semi graphic lines using @..TO..DOUBLE are not displayed in terminal
(text) mode. Why ?
A: RedHat
8.x and above use Unicode charset now for the (plain) terminal mode instead
of the VGA/ASCII char set. You may preferably start the application via newfswin (or newfscons or newfsterm) script,
which sets the environment automatically. Otherwise disable Unicode in /etc/profile.d/lang.sh
by commenting-out the following line to read:
# unicode_start $SYSFONT $SYSFONTACM
See further details in
the Linux How-to's: "zless /usr/share/doc/howto/en/Keyboard-and-Console-HOWTO.gz" . You
also may set LANG=en_EN or LANG=en_EN.ISO-8859-1 (or your national LANG/ISO).
Q: Where are
my umlauts and boxes after updating to SuSE 9.1 and later?
A: Similar
to RedHat, SuSE changed in 9.1 the default console locales to Unicode (UTF-8),
but the setup differs from RedHat. Best to use the newfswin script from
KDE/Gnome console (or via newfscons on textual console) to
start your application, it set proper environment automatically.
Otherwise invoke YaST -> System
-> Language
-> Details and disable the UTF-8 checkbox. Thereafter,
a new login (or reboot) is suggested. You also may set manually the environment
variable LANG=en_EN or LANG=en_EN.ISO-8859-1 and/or
if available LC_CTYPE=en_EN.ISO-8859-1 (or
your national LANG/ISO).
Q: With
gcc 4.6 on 64bit system, I get compiler error "** Warning: C compiler not invoked" but without any displayed syntax error.
A: This may be caused by insufficient stack size for large
source files or many continuation statements. Increase the
stack by uname -s 32768. If you cannot, i.e. you get a message "ulimit: stack size: cannot
modify limit..." you need to set (as su/root/sudo) uname -Hs 32768, then re-open
the user terminal and set uname -s 32768 anew.
Q: With
gcc 3.4, I get compiler warnings, but not with earlier gcc releases.
Why?
A: Unfortunately
is gcc often incompatible to other releases of itself. The displayed gcc
3.4 warning "cc1:
note: -fwritable-strings is deprecated; see documentation for details" is
harmless and can be ignored. This warning does not occur anymore in the newer
FlagShip ports for gcc 4.x
Q: When logged as regular user, everything works fine. But after issuing 'su' I get error saying "connection to 'xyz:0.0' refused by server"
A: This is default X11 security to avoid re-connecting by others as root. There are several choices to manage this, the easiest is to set in the user's ~/.bashrc
or ~/.profile
xhost +
or
xhost +localhost
(in dependence on the used Linux version), and log-in anew.
Q: Does FlagShip use termcap or terminfo? I get message "/etc/termcap, line 8561: terminal 'xxx' unknown..."
A: FlagShip uses the more advanced Terminfo for terminal i/o based application (see "man curses" or "man ncurses" for details). But some Linux distributions have missing link to /usr/lib/terminfo,
set it by:
su
ln -s /usr/share/terminfo /usr/lib/terminfo
exit ## the su mode
You also may set
"export FSTERM=fslinux" or in GUI
environment "export FSTERM=fslinxterm" and
"export FSTERMINFO=/usr/local/FlagShip7/terminfo".
If you are running Terminal i/o based application from GUI/X11 environment
(e.g. console in KDE or Gnome), you may preferably invoke "newfswin
applicName [-io=t]" which automatically set the
environment, see details in fsman section REL. You alternatively may
study or modify the
/usr/local/FlagShip7/bin/newfs* scripts.
Q: After
upgrading to new FlagShip version,
the colors and semi-graphic characters in Terminal i/o do not fit anymore
A: Most
probably, you have installed FlagShip in "compatibiliy mode" to previous
releases, where the new terminfo database is hold locally in /usr/local/FlagShip7/terminfo directory.
If so, set the environment variable export FSTERMINFO=/usr/local/FlagShip7/terminfo -
or don't use the compatibility setup mode. See also fsman ReleaseNotes section
3.e for details.
Q: After
upgrading my Linux (or at new installation), I get error message at executing
the application. What to do?
A: Some Linux distributions have enabled new kernel
security extensions from the SELinux project. If you get message "error
while loading shared libraries ... cannot restore segment prot after
reloc: Permission denied" at the time of executing your application, you
will need to enable security context for the shared FlagShip library
by issuing the command (as root or su):
chcon -t texrel_shlib_t
/usr/local/FlagShip7/lib/libFlagShip7*.so
or disabling SELinux altogether in your /etc/sysconfig/selinux file by setting
the line
SELINUX=disabled
Q: Why the linker cannot find X11 library and exits with error ?
A: In some Linux distributions, there
is a missing link.
Check by" ls -l /usr/X11R6/lib/libX11* " which should display: | ||
-rw-r--r-- | /usr/X11R6/lib/libX11.a | |
lrwxrwxrwx | /usr/X11R6/lib/libX11.so -> libX11.so.6.2 | (or later version) |
-rwxr-xr-x | /usr/X11R6/lib/libX11.so.6.2 | (or later version) |
as well as " ls -l /usr/lib/libX11.a " which displays | lrwxrwxrwx | /usr/lib/libX11.a -> /usr/X11R6/lib/libX11.a |
If the libX11.a library is missing (required for static linking),
you will need to install it from the "X11R4 development" or similarly named package available in your Linux distribution. Also,
in some distributions, the libXft.so link to libXft2.so is missing. If so, create it (as su/root):
cd /usr/lib
ln -s libXft.so.2 libXft.so
If you want to link statically (using the -stat compiler switch) and you
have not the libX11.a or libXft.a in the Linux distribution
package, you may use the partial static linking. To do so, edit the /usr/local/FlagShip7/etc/FS7config file: disable the first PRESTATIC line (usually at line# 40) by placing
# in front of, and un-comment the second PRESTATIC line (usually at line#
44).
Q: Does
FlagShip use native X11, Motif or MS-Windows toolkits for GUI?
Q: Do I
need to install or license the Qt Development Package?
A:
Not directly. To ensure the cross-platform compatibility, FlagShip use
the Qt toolkit as an interface to GUI. For Terminal based i/o, the Curses
library is used. For other system relevant calls, only the standard C system
libraries are required.
A:
You don't need. FlagShip uses commercially licensed Qt. All the by FlagShip
used Qt parts are already available in the FlagShip7*.{a,so,dll,lib} library.
This allows you to create your own (FlagShip Pro based) commercial applications
without any restrictions. Only if you should need to access the Qt modules/classes
directly at low level (i.e. not via FlagShip's standard classes and functions),
you will need your own Qt developer's license. For further Qt licensing
details, see http://www.trolltech.com
Q: Can
FlagShip's Qt version conflict with my KDE, based probably on another Qt
release?
A: It
cannot, since the FlagShip based application use either the dynamic libFlagShip7*.so or the static libFlagShip7*.a library which is without any inheritance to
libqt.so.* used by KDE.
Q: Can I simply change/replace the gcc version to newer release?
A: Conditionally only,
valid mostly for the minor release number. You may usually not switch the gcc
compiler without the corresponding libs, at least libc.a/so. Since the whole
kernel (and all Linux utilities) depends on libc, it can be a dangerous task.
Also the libFlagShip.a/so communicates with libc, so these must match to each
other. Especially the gcc 3.x produces different objects from gcc 2.x (and
gcc 4.x differs from gcc 3.x), hence these may not be mixed. Also in some
RH distributions, different gcc compiler (and library) is used, see details here.
In doubt, always consult the release notes of gcc, here an extract from:
"...changes between gcc 2.x and gcc 3.1 were comprehensive, including changes
to name mangling, exception handling, and class layout and alignment. The
changes between 3.1 and 3.3 are much smaller, but are still large enough to
prevent a mixed C++ program from operating correctly. Do not link C or C++
modules compiled with one of these compilers against modules compiled with
any of the other two compilers. Even if the modules appear to link correctly,
C++ ABI differences may still cause problems that will not manifest themselves
until run time...". The general rule of thumb is: to avoid headaches,
use the compiler and system libs supplied with the Linux distribution, or
update the whole Linux release/distribution instead of gcc or libc only. And
use FlagShip port corresponding
to this gcc / glibc.
Q: Do I need to buy new FlagShip after updating Linux to newer release?
A: No, you don't need Depending
on the new/updated Linux/gcc/glibc version (see above),
you probably will need to update the FlagShip compiler and library, check
here for details. Your activation key remain valid also for other version
of the same FlagShip main release. After downloading the media (or get a CD-ROM),
un-install the old version by FS6uninstall or FS5uninstall (or FSuninstall for
FS4.48) and install anew, it takes two minutes only. You may try first to compile
some trivial source like ? "hello world" ; wait and
execute by ./a.out When you get suspicious messages like "corrupted
serial number", "segmentation fault" and so on, you will definitely
need to update your FlagShip to correspond to the used operating system.
Q: Is FlagShip
available also for MS-Windows?
A: Yes, there
is a native port of Visual FlagShip available for
MS-Windows NT4, 2000, 2003, 2008, XP, Vista and Windows-7.
Your source and data remain 100% compatible and portable to other operating systems,
like Unix or Linux.
Q: Where
are the differences between MSVC6 and BCC32 port?
A: There
are some, but not very significant differences between these C compilers
and accompanying run-time libraries. All of them are already
considered in FlagShip compiler and accompanying library (therefore
different ports), so you should not detect any in your application. The
former limitation of max 50 open files in BCC32 does
not bother anymore, both FlagShip MS-Windows
ports (for MS-VC6++ and
BCC32) supports now at least 2000 simultaneously
open files per user and application. The only known programming difference
is: the BCC32 linker
removes unused externals, so you will need to use EXTERN fun1,fun2,... statement
if functions / procedures fun1( ) and fun2( ) etc.
are called only by macro (and not elsewhere explicitly by name); whereby
the EXTERN is
generally suggested in such a case, see fsman section
CMD.EXTERNAL.
Q: Can
I use the same activation key for both MS-VC6++ and BCC32 ports?
A: Yes, you
can. But please consider the license terms,
you may install the FlagShip development package on one hardware only.
The produced executables are of course freely transferable or distributable,
see more above.
Q: Can
I use Borland BCC with Microsoft MS-VC6++ libraries (and with FlagShip
port for MS-VC6++) or vice versa?
A: You cannot. Both Microsoft and Borland
use different, incompatible object format (COFF vs. OMF). Unfortunately the
Borland's converter IMPLIB and COFF2OMF does not work here, since it does
not handle C++ modules used in the GUI.
But there are ports of Visual FlagShip available for both platforms.
Q: Q:
Is it possible to use a .DLL libraries in Flagship?
A: Yes, if the library is build for
32bit system. To link .DLL, the corresponding .LIB needs
to be linked (it contains header/externals of the .DLL for
the used C/linker system). Such .LIB is usually included
with the .DLL, but you may create
the .LIB from .DLL, e.g. for BCC32 and
available mylib.dll use
C> implib mylib_bcc.lib mylib.dll
and then simply add mylib_bcc.lib to your link list. If the .lib is not available or cannot be created (like for .dll functions written in Delphi), you may access the .DLL directly, see the example here.
Q: Can
I use Microsoft .NET C compiler (MS-VC7) instead of MS-VC6++ ?
A: Sorry, you cannot. Both Microsoft
compilers are incompatible to each other and produce different objects.
But if you haven't MS-VC6++ you can use the free Borland BCC32 compiler.
Q: When
compiling/linking many files, MS-Windows reports "Command line too
long" or "Command
arguments too long"
A: This is caused by the command-line
size limit of CMD.EXE; it allows you to compile
and link approx. 300 to 500 files at once. To overcome this limitation,
create your own library (see FlagShip manual section FSC.1.7) - it can
contain nearly unlimited number of object files. You may preferably use
the "fsmake"
tool (see FlagShip manual section
FSC.6.8) which creates the library (via Makefile)
nearly automatically, and according to your needs.
Q: When
compiling with BCC port of FlagShip, the linker reports "Fatal: Unable
to open file KERNEL32.LIB"
A: Most probably, you have created
the BCC config files
bcc32.cfg and ilink32.cfg in the C:\Borland\Bcc55\bin
directory by your self, didn't you? If so, rename them to e.g.
bcc32_cfg.old and ilink32_cfg.old or delete both; then install
FlagShip anew which creates both *.cfg files if they are not available.
Q: How
can I execute FlagShip application located on Linux/Unix server from
MS-Windows?
A: You
can run it in both textual and GUI mode. To run it in textual mode, compile
on Linux with -io=t switch and invoke the executable via any terminal
emulator (e.g. PuTTY or Telnet or ssh). An overview
of terminal emulators is e.g. on /emulators.html.
Read also fsman section REL for environment settings as well as
additional hints in general
FlagShip FAQs.
To run it in GUI mode, you can access and run the Linux/Unix executable
via X11 server or emulator for MS-Windows which then behaves like usual
Windows program. There are many of them available for MS-Windows, see
e.g.
http://www.rahul.net/kenton/xsites.html.
You can compile with FlagShip -io=g switch or use the auto/hybrid
mode. Both methods work fine also from remote access via Internet or
Intranet. For Web/CGI applications, see the Web*() functions
available in FlagShip as well as the CGI/Web
white paper. Alternatively, you can use native FlagShip for
MS-Windows and access the common data located on Linux server.
Q: How
can I access data located on Linux/Unix server from MS-Windows?
A: You
either can run the application directly on the Unix/Linux server from MS-Windows
(see previous item) which avoids any data transfer thru the network, or
create native MS-Windows exe by the FlagShip port for MS-Windows and then
simply access the data on the network via NFS or Samba.