EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter
From: "Johnson, Andrew N." <[email protected]>
To: "J. Lewis Muir" <[email protected]>
Cc: EPICS Tech-Talk <[email protected]>
Date: Mon, 2 Feb 2015 20:17:24 +0000
Hi Lewis,

Microsoft's attitude to compatibility for C++ code is that you have to use the same major compiler version to be able to link programs with separately compiled libraries. C code does not have the same restrictions though, which is why we can use gcc to build programs that link with the OS libraries, and why Windows' APIs haven't been switched to C++ classes.

It sounds like you are building the vendor's code, which must be done with VC6, but can add your own code to their program. I can suggest a few ways to interface that with EPICS code built with a newer compiler: Use a socket or COM API to to communicate between the two sides, or make the interface a DLL with a C-only API as this should allow you to link with and call code from the other compiler. A DLL would give you a closer and faster interface, but might be more trouble to get working.

If all you need is to call the CA library it does provide the C-only API and DLL that you need, so in this case you might be able to just copy the ca.dll and com.dll files from another machine along with a few header files.

Hope this helps,

- Andrew

-- 
Sent from my iPad

> On Feb 2, 2015, at 1:21 PM, J. Lewis Muir <[email protected]> wrote:
> 
>> On 1/30/15 5:48 PM, Andrew Johnson wrote:
>> I don't think you'll be able to, MS Visual C++ 6 was released in 1998
>> (17 years ago, long before MS implemented standard C++) and it doesn't
>> support all of the C++ constructs that we make use of in Base. In 2008
>> Jeff Hill explained that VC7 was too old to build Base-3.14.9:
>>    http://www.aps.anl.gov/epics/tech-talk/2008/msg00078.php
>> 
>> Can't you upgrade the compiler?
> 
> Hi, Andrew.
> 
> Thanks for your reply.  I'm writing a library (that uses EPICS CA) that
> I need to work with a vendor-supplied program.  Unfortunately, I've been
> told by the vendor that the program will only build with VC6, hence, in
> order to have the best chance of things working right, I was planning to
> use the same compiler to build my library (and EPICS Base).
> 
> So, to answer your question, upgrading the compiler is perhaps possible,
> but I fear it might result in significant pain.
> 
> I'm not a Windows expert.  Is it possible to install, say, Visual Studio
> 2010 *alongside* VC6 on Windows 7?  And if so, is it possible to compile
> EPICS Base and my library as DLLs that the VC6 vendor-supplied program
> can link against?
> 
> Thank you!
> 
> Lewis


Replies:
RE: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter Mark S. Engbretson
Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter J. Lewis Muir
References:
epicsRingPointer.h error C2664: 'delete' : cannot convert parameter J. Lewis Muir
Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter Andrew Johnson
Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter J. Lewis Muir

Navigate by Date:
Prev: Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter J. Lewis Muir
Next: RE: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter Mark S. Engbretson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter J. Lewis Muir
Next: RE: epicsRingPointer.h error C2664: 'delete' : cannot convert parameter Mark S. Engbretson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·