Standalone Exe und Indy
-
Wie/wo kann ich die Datei anders einbinden, sodass ich die Exe als standalone betreiben kann?
-
Also wie kann ich eine Standalone Exe mitsamt dem Indy-Package erzeugen?
Oder wie kann ich eine Standaline Exe erstellen, wo Indy Kompnenten mitverwendet werden?!
-
Gretel-Frage: Du hast nicht etwa Indy 10 eingebunden?
Ich habe mit meinem BCB2006 noch keine Probleme gehabt Indy-Komponenten in einen Standalone EXE einzubinden.Einfach Häkchen weg und die exe wird 300 KB Größer.

-
Also von meinem Borland ausgehend ist Indy 10 eingebunden.
Ich habe Indy 9 durch nur durch#include <IdURI.hpp>,den IndyProtocols Eintrag bei den Laufzeitpackeges und die Pfade zu den Indy Files eingebunden.
Wie kann ich das denn anders bzw richtig machen, sodass ich auf jeden Fall die Laufzeitpackeges wech lassen kann?
Oder besser kann mir einer anhand eines beispieles zeigen, wie ich Indy9 richtig einbinde, sodass es auch ohne die Laufzeitpackeges funktioniert?
-
Ich bin der Meinung, dass jedwedes Borland C++ nicht mit Indy 10 ausgeliefert wird, weil Indy 10 inkompatibel mit Borland C++ ist.
Ich wundere mich, wieso bei dir Indy 10 drauf ist.Wie und ob man einem integriertem Indy 10 sagen kann, dass es doch bitte im Hintergrund bleiben soll, und stattdessen die Indy 9 Files benutzen soll, weiß ich nicht.
Ich würde es folgendermaßen machen:
Borland C++ deinstallieren, eventuelle Datei und Verzeichnissreste von Hand löschen und es wieder neu (diesmal mit Indy 9) installieren, in der Hoffnung, dass es dann läuft.HTH
R
-
Im BCB2007 wird Indy 10.1.15 mitgeliefert.
Folgendes im BCB2007 erstellte und standardgemäss als Standalone Exe erzeugte Programm läuft problemlos auf einem nackten Windows XP.
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <IdURI.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TIdURI *iduri = new TIdURI(0); delete iduri; } //---------------------------------------------------------------------------
-
Ups,, dann ziehe ich meine vorherige Aussage zurück, bzw schränke sie auf BCB 2006 ein.

-
Wenn ich das alles so mache, wie du, Jansen, dann klappt das ohne Probleme.
Schön und gut aber ich brauche ja die Funktion URLEncode und sobald ich die benutze, wie in den Code da unten, dann bekomme ich diese Fehlermeldung:Erste Gelegenheit für Exception bei $7C815DEA. Exception-Klasse EIdURIException mit Meldung 'Protocol field is empty'. Prozess Project1.exe (1188)
Was muss ich jetzt machen?!
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TIdURI *iduri = new TIdURI(0); AnsiString tmp="öäp"; tmp=iduri->URLEncode(__classid(TIdURI),tmp); delete iduri; }
-
Das hatten wir doch alles schon.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-191657.html
-
Vielen Dank, an die Funktion ParamsEncode() habe ich jetzt nicht mehr gedacht aber ich habe nicht ohne Grund, diesen Beitrag unter dem Gesichtspunkt "Standalone Exe" geöffnet!
Jetzt, wo ich diese Funktion nutze und die Laufzeitpackages nicht mehr verwende und das Dyn RTL nicht mehr benutze treten folgende Fehler auf:
[ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall Iduri::TIdURI::TIdURI(const System::AnsiString)' referenziert von C:\TMP\DEBUG\UNIT1.OBJ
[ILINK32 Fehler] Error: Nicht aufl÷sbares externes 'Iduri::TIdURI::' referenziert von C:\TMP\DEBUG\UNIT1.OBJ
[ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall Iduri::TIdURI::ParamsEncode(System::TMetaClass *, const System::AnsiString)' referenziert von C:\TMP\DEBUG\UNIT1.OBJJa ich weiß, das hatten wa auch schon!
Doch wo sollte ich die IndyProtocols.bpi sonst einfügen, ausser bei den Laufzeitpackages, die ich ja nicht verwenden darf, wenn ich ne standalone Exe erstellen möchte?
-
Füge doch mal die IndyProtocols.lib zu deinem Projekt hinzu.
-
Wo genau mache ich das??
-
Hallo,
Projekt --> Dem Projekt hinzufügen --> Lib auswählen --> Öffnen drücken

mfg, Micha!
-
Jetzt kommt dieser Fehler:
[ILINK32 Fehler] Fatal: Datei IDSYSVCL.OBJ kann nicht ge÷ffnet werdenWas muss ich nun machen??
-
Ich verweifel hier noch, was fehlt mir denn, damit ich endlich diese exe als standalone machen kann??
Gibt es dazu keine Dokumentation oder so??