Posts: 198
Threads: 49
Joined: Mar 2018
Reputation:
2
Location: Germany
Hi Alexandre,
C++Builder 12
IW 15.5.3
I have the following error:
[ilink32 Fehler] Error: Nicht auflösbares externes '__fastcall Iwservercontrollerbase::TIWSSLOptions::SetPortW(const int)' referenziert von ...\WIN32\DEBUG\SERVERCONTROLLER.OBJ
[ilink32 Fehler] Error: Linken kann nicht ausgeführt werden
The class has probably been restructured compared to the previous version:
#pragma pack(push,4)
class PASCALIMPLEMENTATION TIWSSLOptions : public TIWServerControllerPersistentProperty
{
typedef TIWServerControllerPersistentProperty inherited;
protected:
System::UnicodeString FCertificatePassword;
int FPort;
TIWNonSSLRequest FNonSSLRequest;
TIWSSLVersion FVersion;
System::UnicodeString FCipherList;
System::UnicodeString FCipherSuites;
TIWSSLVersions FSSLVersions;
bool FEnableACME;
TIWSSLCertificateOptions* FCertificateOptions;
bool FSetOpenSSLPath;
void __fastcall SetCertificateOptions(TIWSSLCertificateOptions* const Value);
void __fastcall SetCertificatePassword(const System::UnicodeString Value);
void __fastcall SetDHParamsFile(const System::UnicodeString Value);
void __fastcall SetSetOpenSSLPath(const bool Value);
void __fastcall SetCipherList(const System::UnicodeString Value);
void __fastcall SetCipherSuites(const System::UnicodeString Value);
void __fastcall SetSSLVersions(const TIWSSLVersions Value);
void __fastcall SetEnableACME(const bool Value);
void __fastcall SetVersion(const TIWSSLVersion Value);
void __fastcall SetNonSSLRequest(const TIWNonSSLRequest Value);
void __fastcall SetPort(const int Value);
public:
virtual void __fastcall Init();
__fastcall virtual ~TIWSSLOptions();
virtual void __fastcall Assign(System::Classes::TPersistent* ASource);
__published:
__property System::UnicodeString CertificatePassword = {write=SetCertificatePassword};
__property System::UnicodeString DHParamsFile = {write=SetDHParamsFile};
__property TIWNonSSLRequest NonSSLRequest = {read=FNonSSLRequest, write=SetNonSSLRequest, default=0};
__property int Port = {read=FPort, write=SetPort, default=0};
__property TIWSSLVersion SSLVersion = {read=FVersion, write=SetVersion, default=5};
__property System::UnicodeString CipherList = {read=FCipherList, write=SetCipherList};
__property System::UnicodeString CipherSuites = {read=FCipherSuites, write=SetCipherSuites};
__property TIWSSLVersions SSLVersions = {read=FSSLVersions, write=SetSSLVersions, default=0};
__property bool EnableACME = {read=FEnableACME, write=SetEnableACME, default=1};
__property TIWSSLCertificateOptions* Certificate = {read=FCertificateOptions, write=SetCertificateOptions};
__property bool SetOpenSSLPath = {read=FSetOpenSSLPath, write=SetSetOpenSSLPath, default=1};
public:
/* TIWServerControllerPersistentProperty.Create */ inline __fastcall TIWSSLOptions(TIWServerControllerBase* AServerControllerBase) : TIWServerControllerPersistentProperty(AServerControllerBase) { }
};
Regards
Juergen
Posts: 2,299
Threads: 202
Joined: Mar 2018
Reputation:
87
Location: Auckland, New Zealand
Are you sure that you don't have any older version in your library path, in your C++Builder options?
This version was extensively tested in C++Builder 12 and no errors have been found.
Posts: 198
Threads: 49
Joined: Mar 2018
Reputation:
2
Location: Germany
I have installed C++Builder 12 only, all other directories, files and path entries has been removed.
The function belongs to the Microsoft SDK:
BOOL SetPort(
_In_ LPTSTR pName,
_In_ LPTSTR pPortName,
_In_ DWORD dwLevel,
_In_ LPBYTE pPortInfo
);
Unicode- und ANSI-Name
SetPortW (Unicode) und SetPortA (ANSI)
Winspool.h
Winspool.lib/Winspool.a
The function is used by the following modules:
IdIOHandler.pas
IdPMCast.pas
IdTCPClient.pas
IdUDPBase.pas
IdUDPClient.pas
IdDNSResolver.pas
There was a similar problem before,
when wininet.lib/wininet.a failed in IWUtils.hpp (IW15.2.65),
That's why I tried to integrate the library myself:
#if _WIN64
#pragma message "Winspool.a"
#pragma link "Winspool.a"
#elif _WIN32
#pragma message "Winspool.lib"
#pragma link "Winspool.lib"
#endif
But it didn't work.
The Embarcadero header file winspool.h seems to be OK.
I have installed version Microsoft Windows 10 - SDK 21.0.
Is this the correct version ?
Posts: 173
Threads: 18
Joined: Jun 2018
Reputation:
23
Location: US
I also get this error with IW 15.5.3 / C++ Builder 11.3
The way to reproduce the error is to assign SSLOptions->Port in code, assigning in the IDE is works ok.