Rolf,
>
> Maybe my first experience with the WIN32 channel access libraries is of
> interest to others: I pulled the WIN32 stuff from the EPICS distribution
> a couple of days ago. scaget and scaput worked out of the box which was
> nice. Then I tried to write a small Windows95 channel access client,
> using only calls to ca.dll. I had to get a bunch of .h files from our
> UNIX distribution which were not in the .ZIP file (callback.h,
> epicsTypes.h, shareLib.h). I was using Borland C++ 5.0 and had a compile
> problem with errmdef.h which tried to include vararg.h in addition to
> stdarg.h. I applied the following fix then everything worked:
>
> #ifdef __STDC__
> # include <stdarg.h>
> #else
> #ifndef __STDARG_H /* added RK 970409 */
> # include <varargs.h>
> #endif /* added RK 970409 */
> #endif
> #include <ellLib.h>
>
The problem with this is that the name conventions for these
defines that prevent multiple inclusion appear to vary from
vendor to vendor. For instance under solaris we have
"_STDARG_H", under MS VIS C++ we have "_INC_STDARG",
and under Borland C++ I am guessing that you have
"__STDARG_H". Therefore, your fix will only work with
some compilers and hopefully will not cause trouble
when using any of the other compilers.
We would only have this problem if we included both
stdarg.h and also varargs,h into the same source file.
In the EPICS 3.13 public header files there are no direct
inclusions of "varargs.h" except in errMdef.h when
__STDC__ is not defined. Likewise, there are no direct
inclusions of "stdarg.h" except from "cadef.h" when
__STDC__ is defined, and from "errMdef.h" when
__STDC__ is defined.
The bottom line is that we dont appear to be causing this
to occur in 3.13. Your problem may be specific to 3.12.2
(if that is what you are using), it may be specific to
Borland C++, or it is perhaps occurring because you are
including stdarg.h either directly or indirectly when your
compiler is not configured to compile ANSI C.
Perhaps you should just configure your Borland C++ compiler
so that it is an ANSI C compiler and therefore defines __STDC__.
>
> Additional question:
> Is there a PC based channel access client somewhere which is a DDE
> server?
We have a first pass at this here (which Kay wrote) but have not
included it in the distribution yet.
We will soon have a version of the EPICS build checked in at APS
that allows all of EPICS base to be built on a PC if you have
MS VIS C++, perl, and gnu make installed. It is quite possible that
Borland C++ will also work if the necessary changes are added to
the configuration files (this has not been tried).
Jeff
______________________________________________________
Jeffrey O. Hill Internet [email protected]
LANL MS H820 Voice 505 665 1831
Los Alamos NM 87545 USA FAX 505 665 5107
- Navigate by Date:
- Prev:
Re: EPICS - WIN32 Mark S. Engbretson
- Next:
Archiving wit AR Marian Zurek
- Index:
1994
1995
1996
<1997>
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: EPICS - WIN32 Mark S. Engbretson
- Next:
EPICS variable Russell J. Page, Sr.
- Index:
1994
1995
1996
<1997>
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|