Synapse / SFTP / cl32.dll

Alle Fragen zur Netzwerkkommunikation
Antworten
wolf_z
Beiträge: 88
Registriert: Mo 31. Aug 2009, 09:31

Synapse / SFTP / cl32.dll

Beitrag von wolf_z »

n'abend allerseits
Ich beschäftige mich gerade mit FTP und teste dafür das Framework Synapse. Dort gibt es ein Demo-Programm sftp. Das ist allerdings ein Delphi-Projekt. Es gibt nur wenige FreePascal-Demos und leider keines für FTP. Unter Delphi funktionierte das Demo-Programm "sftp" super. Ich konnte das sehr gut testen, weil auch mein Domain Hoster "df" testweise sftp für Shared Server freigeschaltet hat.

Dann habe ich die Lazarus-Konvertierungstools verwendet, um das Projekt in ein Lazarus-Projekt umzuwandeln. Das Projekt lässt sich auch sehr gut compilieren: Man muss nur in "SimpleSFTP.pas" die Unit "windows" ergänzen und überall, wo der Compiler hängenbleibt {$define FPC} {$define WIN32} hinzufügen. Voraussetzung ist allerdings, dass man vorher unter Delphi das Projekt ans Laufen gebracht hat, weil man dort noch die Unit cryptlib.pas als Schnittstelle zu cl32.dll (und natürlich auch cl32.dll) irgendwo aus dem Internet herunterladen muss. (Für Linux verwendet man natürlich 'libcl.so'.)

Mein Problem ist, dass zwar die im Windows-Verzeichnis als Administrator (Vista) abgelegte cl32.dll unter Delphi einwandfrei gefunden wird. Unter Lazarus kommt aber die Fehlermeldung "Die Anwendung konnte nicht gestartet werden, weil cl32.dll nicht gefunden wurde." Das gleiche passiert, wenn ich die dll im Anwendungsverzeichnis ablege. Ich habe auch mal den Suchpfad auf das Windows-Verzeichnis gesetzt, hilft aber auch nix.

Die Schnittstellen-Definitionen in cryptlib.pas sehen alle ungefähr so aus

Code: Alles auswählen

unit cryptlib;
.....
interface   
 
{$define FPC}
{$define WIN32}
 
{$A+}  {Set Alignment on}
{$F+}  {Force function calls to FAR}
{$Z+}  {Force all enumeration values to Integer size}
 
const
  {$IFDEF WIN32}
    // cryptlibname = 'CL32.DLL';  { dynamic linkname for Windows (Delphi) }
    cryptlibname = 'cl32.dll';
  {$ELSE}
    cryptlibname = 'libcl.so';  { library name for Unix/Linux  (Kylix) }
                 { symbolic link should be used for libcl.so -> libcl.so.3.x.y }
  {$ENDIF}   
 
.....
 
function cryptDeleteAttribute( const cryptHandle: CRYPT_HANDLE;
  const attributeType: CRYPT_ATTRIBUTE_TYPE ): Integer;
{$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external cryptlibname;
 
.....
Wie schaffe ich es, dass das Lazarusprogramm die DLL findet?

Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Synapse / SFTP / cl32.dll

Beitrag von theo »

Das liegt wohl kaum an Freepascal. Ich hab's eben mit cryptlib-3.2.2-snap.zip auf Win2k ausprobiert.
Kein Problem.

wolf_z
Beiträge: 88
Registriert: Mo 31. Aug 2009, 09:31

Re: Synapse / SFTP / cl32.dll

Beitrag von wolf_z »

Den Versuch cl32.dll zu laden hab ich jetzt aufgegeben.

Wahrscheinlich liegt es daran, dass ich ein 64bit-Vista habe. An der dll selbst kann es allerdings nicht liegen, da ich sie ja unter Delphi laden kann. Wahrscheinlich also irgendein Problem in Bezug auf das Laden einer DLL, das bei Verwendung von Lazarus auf Vista64 auftritt. Ich habe es auch mal probeweise mit einer Lazarus-Windows32-Installation auf Vista64 versucht. Dort tritt aber das gleiche Problem auf.

Die cryptlib ist für mich persönlich auch uninteressant, da
- ich erstens kein SSL-FTP benötige und
- zweitens basiert sie auf einer GPL-ähnlichen Lizenz.
Ich verwende normalerweise nur Bibliotheken, die unter BSD oder MPL-ähnlichen Lizencen stehen.

Ich verfolge jetzt einen anderen Weg. Und zwar gibt es in Synapse noch das Delphi-Programm TFTPClient, dass sich problemlos auch nach Lazarus übersetzen lässt und auch funktioniert. Leider ist dieses Programm so simpel, dass ich mich nicht mit meinem Domain Hoster verbinden kann. User und Password-Eingabe fehlen. Aber dafür mache einen anderen Thread auf, um das Problem zu diskutieren. Also bitte nicht hier auf dieses Problem antworten :)

Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Synapse / SFTP / cl32.dll

Beitrag von theo »

wolf_z hat geschrieben:Aber dafür mache einen anderen Thread auf, um das Problem zu diskutieren. Also bitte nicht hier auf dieses Problem antworten :)
Ich sehe keinen. ;-)
wolf_z hat geschrieben: Und zwar gibt es in Synapse noch das Delphi-Programm TFTPClient,
Das ist alles nicht das gleiche.
FTP<>TFTP<>SFTP

FTP: http://de.wikipedia.org/wiki/File_Transfer_Protocol" onclick="window.open(this.href);return false;
TFTP: http://de.wikipedia.org/wiki/Trivial_Fi ... r_Protocol" onclick="window.open(this.href);return false;
SFTP: http://de.wikipedia.org/wiki/Secure_Fil ... r_Protocol" onclick="window.open(this.href);return false;

Antworten