Probleme beim Einloggen

Modern C++

JOBS IM MARKTPLATZ oder/und unter https://bit.ly/2DSIASE POSTEN! Hier geht es um C++, Modern C++ & die neuen Standards > C++11.

Norbert Kailan Installierbares Programm
Hallo Leute,
habe mit Visual Studio 2008 Express Edition in C++ mit Windows Forms und .Net 3.x mehrere Apps / Anwendungen erstellt, die ich als Freeware ins Netz stellen will. Einfach damit trainiert und wieso wegwerfen?
Doch mit dieser Freeware Edition von Visual Studio 2008 kann man zwar auch kommerzielle Programme erstellen, aber keine installierbare Version direkt erzeugen.
Ich habe gemerkt, dass die erstellten Anwendungen nicht auf anderen PCs laufen. Wenn ich dann noch System - Files aus Visual Studio Verzeichnissen dazulege, dann geht es zwar aber mit Fehlermeldung, falscher DLL Aufruf.
Ich habe schon einiges in C++ auch ohne .Net entwickelt, aber nie fertig installierbare Programme erstellt sondern nur in Projekten Teillösungen erarbeitet.
Wie komme ich zu einer installationsfähigen Version?
Stefan Wörthmüller
+25 weitere Kommentare
Letzter Kommentar:
Norbert Kailan
@ Martin Baschnegger :
OK, das war hilfreich, vielen Dank.
Der Dependency Walker kann .Net also tatsächlich nicht richtig. Es bemerkte ja auch jemand, dass das eine C++ Plattform und nicht eine .Net Plattform ist.
OK ich programmiere C++ aber mit .Net.
Natürlich hätte ich lieber mein eigenes, auf MFC basierendes GUI Background erzeugt und dann darauf mehrere 'Programme aufgebaut. Aber MFC, SDK und weitere Hilfen, damit man nicht von Scratch starten muss (eine Windows-Oberfläche mit komplexem Design, File IO inklusive Print, Text, RichText, eMail und Web Explorer, FTP, etc.), funktionieren bei mir gar nicht: auch nach kompletter Installation und allen Versuchen fehlen DLLs, *.h Header Files, praktikable Einbindung in Visual Studio. Ich musste so .Net wählen.
Nur für XING Mitglieder sichtbar Erfahrung mit Webprogrammierung mit C++
Hi!
Ja, ich hab mich nicht verschrieben: Ich meine wirklich Webprogrammierung und nicht Netzwerkprogrammierung.
Hat schon jemand Erfahrung gesammelt. Das Wt-Tool-Kit macht auf mich ein sehr guten Eindruck. Ich hab mir auch schon (oberflächlich) PHP, WebPy, Wickit und Co angeschaut. Was mich maßlos stört ist entweder die mangelnde Typensicherheit (PHP, Python, Perl usw.) oder die XML-/konfigurations-lastigkeit (Java) .
Wt ist ja weder das erste noch das ein zigste Projekt, was C++ für die Webprogrammierung einsetzen will. Allerdings sind alle Projekt in die Richtung - so mein Eindruck - sehr klein. Das C und (moderne) Webprogrammierung kein Widerspruch sein müssen zeigt - finde ich - ganz eindrücklich das Citadel/UX-Projekt.
Was sind eure Gedanken dazu? Ist C++ eine ernsthafte Option in der Webprogrammierung oder doch nur "kuriose Randerscheinung"?
Gruß aus München
Olaf
Kai Scheddin
+60 weitere Kommentare
Letzter Kommentar:
Marcel Wid Ein kleines C++ Rätsel
Ich bin zufällig auf die folgende Zeile (Standard konformen) Codes gestossen:
auto x = *<:??)()??<%>;
Da ich solche kleinen Rätsel interessant finde, möchte ich es mit euch teilen. Die Frage lautet: Was für einen Typ hat x? (Warum?)
Es gibt zwar nichts zu gewinnen, aber vielleicht habt ihr ja Lust darüber nachzudenken. Viel Spaß!
Jens Weller Torsten Robitzki Holger Detering
+7 weitere Kommentare
Letzter Kommentar:
Marcel Wid
Die Variable x hat den Typ void(*)(), wie alle vermutet haben. Warum? Die Methode von Rainer (mit typeid) funktioniert hier zwar, kann aber leicht zu falschen Ergebnissen führen (typeid(const int).name() liefert nur "int" zurück!).
Was soll der Stern "*"? Ohne den Stern
auto x = [](){};
wäre es nicht möglich den Typ von x zu benennen. Jeder Lambda-Ausdruck hat einen eindeutigen "unnamed" Typ. Das bedeutet auch, dass
auto x = [](){};
auto y = [](){};
hier x und y zwei unterschiedliche Typen haben. Da der Lambda-Ausdruck im Rätsel kein "lambda-capture" hat, besitzt der Typ eine "public non-virtual non-explicit const conversion function to pointer to function". Da der Lambda-Ausdruck keine Parameter hat und nichts zurückliefert, gilt das gleiche auch für diese Funktion. Und genau diese Konvertierung wird durch den Stern erzwungen. Man hätte auch den unären Operator "+" anstelle von "*" verwenden können.
Harald Galda Wie kann man C++ mit C# kombinieren?
Es ist möglich, GUIs mit C# und Algorithmen mit C++ zu implementieren. Die Frage ist nur: wie kann man beides kombinieren? Zwei Möglichkeiten sind mir bekannt:
1. DLL, deren Funktionen eine Signatur im C-Stil haben. Jeder Funktionsaufruf ist kompliziert, aber das ist eher ein C#-Problem.
2. Eine als "public ref class" deklarierte Klasse in einem DLL-Projekt, compiliert mit "Common Language Runtime". So eine Klasse kann Membervariablen von numerischen Datentypen, C#-Strings (System::String^) und Zeigern enthalten, und Memberfunktionen können Parameter und Rückgabewerte dieser Datentypen haben.
Hierbei sehe ich die folgenden Probleme:
1. Aufzählungstypen (enum) können weder als Parameter noch als Rückgabewerte verwendet werden. Man kann einen Aufzählungstyp doppelt deklarieren (einmal in C#, einmal in C++), aber das ist sehr fehleranfällig. Ob man konstante Membervariablen in einer verwalteten C++-Klasse deklarieren kann, weiß ich nicht. Außerdem sind öffentliche Membervariablen nicht gerade ein Musterbeispiel von sauberer Programmierung.
2. Aufgrund der Projekteinstellungen für die DLL steht der Namensraum stdext nicht zur Verfügung. Daher kann man auch keine geprüften Iteratoren (checked_iterator) verwenden. Verwendet man Zeiger als Iteratoren und ruft Algorithmen wie copy oder transform auf, gibt es Compilerwarnungen. Die sind zumindest hässlich. Noch schlimmer sind in meinen Augen for-Schleifen und C-Funktionen wie memcpy. Nackte Zeiger lassen sich überhaupt nicht vermeiden, da Templates nicht unterstützt werden. Damit fallen auch Container und intelligente Zeiger weg.
3. Im C#-Modul kommen etliche Blöcke vom Format unsafe{... fixed(){}... } vor.
Also: wie kann man C# und *sauberes* C++ kombinieren?
Shivesh Kumar Pappu Harald Galda
+16 weitere Kommentare
Letzter Kommentar:
Harald Galda
Rechnet das "normale" C++ schneller als das verwaltete C++ die Daten übertragen oder C# zeichnen kann? In diesem Fall sollte geprüft werden, ob wirklich alles angezeigt werden muss. Alternativ dazu kann man auch einen Puffer mit berechneten Ergebnissen aufbauen.
Wenn man Zeiger auf Speicherblöcke verwendet, ist der Ablauf vielleicht schneller, weil keine Daten, sondern nur die Zeiger kopiert werden müssen. Aber dann muss man auf der C#-Ebene unsafe{ fixed(){} } verwenden. Damit wird der Garbage Collection mitgeteilt, dass bestimmte Variablen nicht im Speicher verschoben werden sollen. Dadurch kann wiederum der Speicher fragmentiert und das ganze Programm langsam werden.
Die hier diskutierten Lösungsmöglichkeiten mit "public ref class", "public enum class", System::String^ und "public value class" dürften am effizientesten sein.

Events dieser Gruppe

Alle Events

Moderatoren

Infos zu den Moderatoren

Über die Gruppe "Modern C++"

  • Gegründet: 28.11.2007
  • Mitglieder: 6.002
  • Sichtbarkeit: offen
  • Beiträge: 3.206
  • Kommentare: 2.431
  • Marktplatz-Beiträge: 21