Managed Code
-
Als Neuling, der - was managed Ciode anbelangt - nur mit threads gearbeitet habe,
habe ich eine FrageIch habe eine dll, die ich wohl mit
#using <OpenFTP.dll>
einbinden sollte, daann habe ich die dazugehörige Datei
**ftp.cs
**
die wohl das, was in C++ der Header ist.Wie binde ich die Library nun ein? Wie lautet da die Syntax? #include?
[der CLR-Schalter ist gesetzt, immerhin...]
-
Die bindest Du so nicht in das Programm.
Gehe in das Menü "Projekt/Eigenschaften" dann den Knoten von "Konfigurationseigenschaften" öffnen, dann den Knoten "Linker" öffnen, dann unter "Eingabe" in der Splate auf der rechten Seite unter Zusätzliche Abhängigkeiten" die gewünschte LIB eintragen, die in dem Verzeichnis liegen sollte, in dem Dein Projekt liegt.
Und in C++ die Header hat noch immer die Endung *.h
-
es geht auch:
#pragma comment(lib, "library_name.lib")
wobei library_name.lib musst du dann halt durch den jeweiligen Namen der *.lib ersetzen.
diese Methode funktioniert NUR bei Microsoft Visual Studio,
aber da du mit :Net arbeitest, geh ich mal davon aus, dass du das hast xD
-
ja, das klingt - beruhigenderweise - sehr vertraut.
Gleichwohl ist mir, was das konkrete Problem aneblangt, nicht geholfen.
Da habe ich
- eine dll
- zwei *.cs DateinDas ist alles. Wie kann man das einbinden? [Ich nehme an, das muss gehen, ansonsten hätten sich die vielen Nutzer, die OpenFTP bei Codeproject, runterlanden, schon beschwert]
-
Hab mir das mal eben angeguckt.
Das ist C#.
Guck da mal
http://www.c-plusplus.net/forum/viewtopic-var-t-is-173908-and-highlight-is-dll+einbinden.html
-
Ja, im wesentlichen geht's darum, wie man eine c# library einbetten kann.
Ich denke, das geht über das Schlüsselwort#using <OpenFTP.dll>
using namespace OpenFTP;Das wird brav kompliliert, auch die c# Datei lässt sich einbetten, aber ich weiß trotzdem nicht, wie man mit dem Ausgangsmaterial die Library nutzbar machen kann
@Doug_HH Schönen Dank für den Hinweis, aber so richtig weitergeholfen hat's nicht.
-
Wo hast Du den die OpenFTP.dll her?
Habe die da nicht auf der Seite gefunden.
-
Ein unglaublich schlanker Code, das war's, was mir gefallen hat:
-
Das was uns hier vorliegt, ist der Code der DLL.
Man könnte den in C++/CLI umschreiben, damit man die LIB bekommt.
Habe das aber mal eben anders gemacht.
Wir benutzen nun nur die DLL.
Musst nur noch den Pfad angeleichen.
Vergiss nicht die DLL über#using "OpenFTP.dll"
einzubinden...
und...
using namespace OpenFTP;
zu setzen...
OpenFTP::FTP^ f = gcnew OpenFTP::FTP; f->Connect("127.0.0.1", "username_here", "password_here"); f->ChangeDirectory("somedirectory"); f->Files->Upload(Path->GetFileName(sFileName), Path->GetFileName(sFileName)); while (!f->Files->UploadComplete) { Console.WriteLine("Uploading: TotalBytes: " + f->Files->TotalBytes->ToString() + ", : PercentComplete: " + f->Files->PercentComplete->ToString()); } Console.WriteLine("Upload Complete: TotalBytes: " + f->Files->TotalBytes->ToString() + ", : PercentComplete: " + f->Files->PercentComplete->ToString()); f->Disconnect(); f = null;
Musst mal gucken ob Du damit weiter kommst!?
-
herzlichen Dank, Doug, für die Mühe
dll ist eingebunden, ich habe auch auf die Klasse Zugriff.
Sonderbarerweise funktioniert Dein Konstruktor nicht. Da bekomme ich eine FehlermeldungOpenFTP::FTP^ f = gcnew OpenFTP::FTP;
Das hingegen lässt sich kompilieren:
OpenFTP::FTP* f = new OpenFTP::FTP();
Ist das ok?
Clr habe ich angestellt, weil ich in der Datei Threads benutze. Das sieht etwa so aus:#using <mscorlib.dll> using namespace System; using namespace System::Threading; public __gc class ScannerThreading { ... }
-
Wenn ich das so schreibe bekomme ich eine Fehlermeldung.
FTPKonsole.cpp(13) : error C3699: "*": Diese Referenzierung kann nicht für den Typ "OpenFTP::FTP" verwendet werden.
Hast Dur schon Erfolg gehabt?
Wenn ja, sag mir bitte was Du geändert hast.
Wäre nett.
-
der OP hat VS2002/2003. Du hast VS2005. In VS2005 kannst Du auch die "alte" Syntax verwenden, wenn mit "/clr:oldsyntax" compiliert wird.
-
Doug, dank für die Mühe.
Ja, das liegt daran, dass ich Visual Studio 2003 verwende.
Zwar kann das ja auch C#, aber wie's scheint, lässt sich das nicht mit C++ verbinden. Jedenfalls streikt das Programm, wenn ich den gecnew Operator benutze.Noch irgendeine Idee?
-
Percy2000 schrieb:
Doug, dank für die Mühe.
Ja, das liegt daran, dass ich Visual Studio 2003 verwende.
Zwar kann das ja auch C#, aber wie's scheint, lässt sich das nicht mit C++ verbinden. Jedenfalls streikt das Programm, wenn ich den gecnew Operator benutze.Benutze ich den new Operator, wird's kompiliert, aber die Funktion wird trotzdem nicht ausgeführt. Warst Du Deinerseits erfolgreich mit dem Connect?
Noch irgendeine Idee?
-
Kann Dir da jetzt nicht wirklich helfen.
Hab auch schon einiges versucht.
Dann rumst Dir das doch erstmal in C# rein um zu sehen ob es überhaupt funzt.