Bonjour
Je veux cr�er une DLL capable de transmettre un fichier par FTP sous Rad Studio Seattle (pour acc�der au TIdSSLIOHandlerSocketOpenSSL)
J'ai fait un test concluant avec C++ Builder 6 (sans TIdSSLIOHandlerSocketOpenSSL bien s�r).
Je reprends mon code BCB6 sur Rad Studio. Tout va bien jusqu'� la compilation mais l'�dition des liens �choue :
Bien s�r tous les Include n�cessaires sont pr�sents sinon la compilation �chouerait.[ilink32 Erreur] Error: 'Idftp::TIdFTP::' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: '__fastcall Idftp::TIdFTP::~TIdFTP()' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: '__fastcall Idexplicittlsclientserverbase::TIdExplicitTLSClient::~TIdExplicitTLSClient()' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: '__fastcall Idtcpconnection::TIdTCPConnection::~TIdTCPConnection()' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: '__fastcall Idcomponent::TIdComponent::~TIdComponent()' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: '__fastcall Idbasecomponent::TIdBaseComponent::TIdBaseComponent(System::Classes::TComponent *)' externe non r�solu, r�f�renc� depuis H:\MES DOCUMENTS\EMBARCADERO\STUDIO\PROJETS\CPP_DLL\WIN32\DEBUG\FILE1.OBJ
[ilink32 Erreur] Error: Impossible d'effectuer le lien
La doc Embarcadero dit ceci https://docwiki.embarcadero.com/RADS...s_%27module%27
Mais rien ne me"cause" dans ce qui y est dit.
Je pr�cise aussi que
1) l'option Projet "Lier avec la biblioth�que d�ex�cution delphi" est valid�e sans quoi un autre message d'erreur apparait
2) L'option "lier avec la RTL dynamique" est sans effet
Ci dessous le code
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 #pragma hdrstop #pragma argsused #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.StdCtrls.hpp> #include <Vcl.Forms.hpp> #include <IdFTP.hpp> #include <IdTCPClient.hpp> #include <IdTCPConnection.hpp> #include <ComCtrls.hpp> #include <IdBaseComponent.hpp> #include <IdComponent.hpp> #include <IdIOHandler.hpp> #include <IdIOHandlerSocket.hpp> #include <IdIOHandlerStack.hpp> #include <IdSSL.hpp> #include <IdSSLOpenSSL.hpp> #include <IdFTP.hpp> #include <IdTCPClient.hpp> #include <IdTCPConnection.hpp> #include <ComCtrls.hpp> #include <IdExplicitTLSClientServerBase.hpp> #include <IdFSP.hpp> #include <IdUDPBase.hpp> #include <IdUDPClient.hpp> #include <Vcl.FileCtrl.hpp> extern "C" __declspec(dllexport) __stdcall boolean SendTool(TForm * Form,TStream * Stream, TIdSSLIOHandlerSocketOpenSSL * IdSSL); TIdFTP * IdFTP1; boolean __stdcall SendTool(TForm * Form, TStream * Stream, TIdSSLIOHandlerSocketOpenSSL * IdSSL) { IdFTP1 = new TIdFTP(Form); try { IdFTP1->Host=<host> IdFTP1->Username=<user> IdFTP1->Password=<pw> IdFTP1->IOHandler=IdSSL; IdFTP1->UseTLS=utUseExplicitTLS; IdFTP1->DataPortProtection=ftpdpsPrivate; IdFTP1->Port=21; IdFTP1->TransferType= ftBinary; IdFTP1->Connect(); } __finally { if (IdFTP1->Connected()) { IdFTP1->Put(Stream,"test2"); IdFTP1->Disconnect(); IdFTP1->Free(); } }; return true; }
Partager