Jump to content

Recommended Posts

SVN now has much improved C++ packages for Delphi 10.4 and later, although they should work with earlier versions by manually adding a specific compiler suffix.  

 

All C++ Win32 packages build and install for release, bugs need fixing for debug and Win64.  Will be in the overnight zip tomorrow, if any C++ users wants to try to install them.  

 

I tried to build some C++ samples, but they are looking for .h files we now have .hpp, and that is beyond my zero C++ skills. 

 

Angus

 

Share this post


Link to post

Angus, I tried building and installing the C++ Win32 Release packages, and it didn't work at all. Were you using build groups, or did you build/install them separately? I'm currently completely uninstalling my 12.2 installation and reinstalling from scratch to eliminate that as the issue.

Thanks,

Ian

Share this post


Link to post

Okay! I reinstalled 12.2, and built the entire release group after removing the 64-bit compiles, and it worked! Installed my other component sets and while attempting to compile our app, got the same errors with the overnight that HTMLValidator did.

[bcc32c Error] OverbyteIcsTypes.hpp(74): unknown type name '_TRANSMIT_FILE_BUFFERS'
[bcc32c Error] OverbyteIcsTypes.hpp(76): unknown type name '_TRANSMIT_FILE_BUFFERS'
[bcc32c Error] OverbyteIcsTypes.hpp(78): unknown type name 'ip_mreq'
[bcc32c Error] OverbyteIcsTypes.hpp(80): unknown type name 'ip_mreq'
[bcc32c Error] OverbyteIcsTypes.hpp(94): unknown type name 'sockaddr_in6'
[bcc32c Error] OverbyteIcsTypes.hpp(96): unknown type name 'sockaddr_in6'
[bcc32c Error] OverbyteIcsTypes.hpp(98): unknown type name 'ipv6_mreq'
[bcc32c Error] OverbyteIcsTypes.hpp(100): unknown type name 'PIPV6_MREQ'
[bcc32c Error] OverbyteIcsUtils.hpp(624): unknown type name 'sockaddr_in6'
[bcc32c Error] OverbyteIcsUtils.hpp(624): expected unqualified-id

 

These did *not* show up when compiling the components, only when attempting to use them in my app. I did as he said:

Quote

Well, after playing around, I added these two lines to OverbyteIcsTypes.hpp (after '#include <System.SysUtils.hpp>') and it worked!

#include <mswsock.h>
#include <ws2ipdef.h>

and it seems to have worked - it's at least compiling my app with no errors. If there's a way to get Delphi to create the .hpp file with those two lines, then this should fix the issue for anyone else. 

It's not the 64-bit version I'd love to get working, but at least this might mean we can start developing on 12.2. Thank you, Angus! I *think* it might have been set to use the classic bcc32 compiler, and the dynamic RTL, so I may need to recompile the whole thing with the modern compiler and static libs, but hopefully it will still work. 

 

  • Like 1

Share this post


Link to post
15 minutes ago, w0wbagger said:

If there's a way to get Delphi to create the .hpp file with those two lines,

There is a way ! The $HPPEMIT directive should do the job.

Try to add those lines somewhere near the top of the OverbyteIcsTypes.pas file:

{$HPPEMIT '#include <mswsock.h>'}
{$HPPEMIT '#include <ws2ipdef.h>'}

 

Share this post


Link to post

Thanks, François! The only other thing I had to change in my app (that was using 8.70 prior to this) was to change my check of FtpClient->State from Overbyteicsftpcli::ftpReady to TFtpState::ftpReady in a couple of places.  Haven't tried my app yet, but am hoping it will work - it seems to be compiling fine. Will let it finish compiling overnight and test it in the morning.  

  • Like 1

Share this post


Link to post

I'll update the types unit with the new include emits shortly. 

 

I can only build C++ packages not use them, since the ICS C++ samples are too old to build with modern compilers, it really needs someone to update two or three C++ samples so I can test that they build with new versions of ICS. 

 

The C++ Win64 packages build with release for me, but not debug, someone will need to look at that. 

 

The common package builds for Win64x, but not the run package which imports conmon, because currently D12.2 can only import Delphi packages and not C++ due to missing symbol files, due to fixed in a future release.  

 

Angus

 

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×