IDE 1.6.5 -> 1.6.7 Projekt kompiliert nicht mehr.

Hi,

kann es sein, dass die IDE 1.6.7 anders kompiliert, oder der Präprozessor anders arbeitet?

Ich habe ein Projekt mit mehreren inos. z.B. eine LCD.ino für den LCD-Ausgabe-Code.
In der LCD.ino gibt es ein LCD_Setup(), und ein LCD_Main().
In der Haupt-ino werden die jeweils in void setup () und void loop() aufgerufen.
Damit habe ich eine gewisse Struktur und nicht alles im Haupt-ino

Das hat mit 1.6.5 funktioniert.
Jetzt mit der 1.6.7 bringt er beim Übersetzen einen Sack von Fehlern:
z.B.

'LCD_Setup' was not declared in this scope

Was ist jetzt da anders?

hk007:
In der LCD.ino gibt es ein LCDSetup(), und ein LCDMain().

'LCD_Setup' was not declared in this scope

Was ist jetzt da anders?

LCD_Setup != LCDSetup

oder ist das nur ein Tippfehler im Beitrag?

Tippfehler, sorry
Habs im ersten Post geändert. Danke

Auch ist mir aufgefallen, dass Variablen, die ich in der Haupt-ino definiert habe nicht mehr in einer Unter-ino verwendet werden können.
"...not declared in this scope..."

kann es sein, dass die IDE 1.6.7 anders kompiliert, oder der Präprozessor anders arbeitet?

Ja, der Build Prozess wurde komplett überarbeitet.

Naja...
So viel besser ist das ja scheinbar nicht geworden.
Mit meinen ESP8266 bin ich mit der 1.6.6 auch nicht fertig geworden.
Die 1.6.7 habe ich aus dem Grund auch noch nicht mal getestet.
Klebe noch an der 1.6.5

Bau das schön in *.h und *.cpp Dateien um.
So richtig mit selbstgebauten "extern" Deklarationen.
Dann sollte das gelingen....

Hi combie,

du hast den Nagel auf den Kopf getroffen.

Bin grade die harte Schule durch. Auch mit dem ESP8266. Programm auf 1.6.7 "portiert"

Die Jungs im gitter haben mir super geholfen.

hk007:
Bin grade die harte Schule durch. Auch mit dem ESP8266. Programm auf 1.6.7 "portiert"

Die Jungs im gitter haben mir super geholfen.

Das hab ich auch noch vor mir. Kannst du mal den vorher/nachher Code posten? Also dass man sieht, wo und was zu ändern ist.

Hi ElEspanol,

Kurzinfo:
Hab alle anderen inos in cpp umbenannt. Ein header.h neu geschrieben und dort die void xyz() deklariert, die ich cpp übergreifend nutzen will. Ebenso externe Deklarationen für Variablen, die ausserhalb einer cpp genutzt werden wollen.

Eigentlich bin ich über zwei Sachen gefallen:
1.) Anscheinend macht die IDE nicht mehr aus mehreren Inos eine cpp und kompiliert diese dann.
2.) Ich habe immer wieder Funktionen erst nach dem Aufruf definiert (oder deklariert oder wie auch immer mn das nennt) Die alte IDE hat das wohl automatisch richtig gestellt. Für die 1.6.7 musste ich das aber selber grad ziehen.

Aber schau dir mal im Gitter den Chat von gestern Abend an.
me-no-dev hat da um 20:35 ein gutes Beispiel/HowTo gepostet, wie man das machen kann. Ob das jetzt C/C++ technisch vollkommen in Ordnung ist, mag ich nicht zu beurteilen, aber nach diesen Änderungen (und Behebung einer Menge anderer Unwissenheit von mir) konnte ich mein Projekt wieder erfolgreich kompilieren.

Fazit: Update 1.6.5 -> 1.6.7: 10 Minuten
Projektangleich: 5 Stunden. (Profi macht das wahrscheinlich in 5 Minuten, oder schreibt seinen Code gleich so, dass es keine Probleme gibt :confused: )

@Serenifly und die anderen Profis: Habe ich das so richtig wieder gegeben, oder wollt ihr da noch was richtig stellen? Nur her damit, damit ich beim nächsten Update nicht wieder hänge.

hk007:
Fazit: Update 1.6.5 -> 1.6.7: 10 Minuten
Projektangleich: 5 Stunden. (Profi macht das wahrscheinlich in 5 Minuten, oder schreibt seinen Code gleich so, dass es keine Probleme gibt :confused: )

Ich dachte immer, richtige Profis arbeiten gar nicht erst mit der IDE :slight_smile:

Vielen Dank noch für die ausführliche Erläuterung.

Was ist in der 1.6.7 in der Praxis besser, dass sich das Updaten lohnt?

Das ReleaseNotes hab ich schon gelesen.

ElEspanol:
Ich dachte immer, richtige Profis arbeiten gar nicht erst mit der IDE :slight_smile:

Das ändert aber am Problem nichts. Visual Micro verwendet im Hintergrund auch nur den Arduino Build Prozess.

Was ist an Visual Micro anders/besser als an der IDE?

Die Arduino IDE hat sich mit der Zeit etwas gebessert (inzwischen gibt es auch Dinge wie Zeilennummern und Code-Folding. Oder man kann endlich mal die Warnungen beim Compilieren aktivieren), aber mehr als ein aufgebohrter Text-Editor ist es immer noch nicht. Visual Micro läuft in Visual Studio oder Atmel Studio (was auch wiederum nur Visual Studio ist). Man hat also alle Funktionen einer professionellen IDE. Das heißt Dinge wie Autovervollständigung, Refactoring oder bessere Suchfunktionen. Gerade Autovervollständigung per Intellisense nimmt einem erstens viel Arbeit ab und man lernt auch die Bibliotheken damit, weil man sofort sieht was an Methoden gibt. Oder wenn man eine Variable anklickt werden automatisch alle anderen Version davon hervorgehoben. Wenn man die Maus über eine Variable hält wird der Datentyp angezeigt. Bei Konstanten auch der Wert. Wenn man den Mauszeiger über eine Funktion hält sieht man den Prototyp und weiß was man übergeben soll. Das Programmieren ist so einfach viel komfortabler.

OK,

hört sich so an, als ob du sie benutzen würdest.
Wie ist das mit den anderen Funktionen?

  • Download
  • BoardsManager
  • ESP8266-Unterstützung (darf man sich hier outen)

Sind die da auch integriert?

Aber Visual Studio ist keine Freeware oder?

Ich hab Visual Studio bisher noch nicht zum Laufen bekommen. GBweise Downloads, aber geht immer noch nicht. Muss mich mal mehr dahinter klemmen

hk007:
Aber Visual Studio ist keine Freeware oder?

Ja. Ist es neuerdings. Visual Studio Community Edition.

Du kannst auch Atmel Studio verwenden. Da versteht Intellisense etwas mehr von der avr gcc Syntax (in Visual Studio prüft Intellisense gehen Visual C++ was nicht 100%ig identisch ist) und man kann auch rein avr gcc programmieren. Aber mit Visual Studio bekommt man auch Visual C++ (praktisch um mal schnell kleine, allgemeine Funktionen zu debuggen) und C# (für GUIs).

Das andere geht alles:
http://www.visualmicro.com/page/Arduino-Boards-Manager.aspx
http://www.visualmicro.com/page/esp8266.aspx

Aber wie gesagt basiert das im Hintergrund auf den Arduino Dateien. Also alles was sich am Arduino Build Prozess ändert, siehst du auch da!

Kann ich das parallel installieren?
Oder verknüpft sich das mit der Arduino IDE?

Wenn eigenständig, dann könnt ich es eher wagen :wink:

Und ist das nur in Englisch?

Visual Micro greift auf die Arduino IDE Dateien zu, aber ansonsten ist es getrennt voneinander.

Visual Studio gibt es auch auf deutsch. VM nicht. Bei AS ist es wohl ähnlich. Das basiert auf VS und die allgemeinen Dinge gibt es auch auf Deutsch, aber die AS-spezifischen Dinge nicht. Also besser gleich alles auf Englisch installieren.

Ähh jetzt komm ich etwas mit den Begriffen durcheinander.

Was brauch ich jetzt?
1.) Visaul Studio als Basis, oder?
2.) dazu Visual Micro
3.) dann die Arduino IDE für Visual-Studio?

Oder ist 2 und 3 das selbe?

Die Arduino IDE hast du doch schon. Das muss als erstes installiert sein.

Dann entweder Atmel Studio + Visual Micro oder Visual Studio Community Edition + VM. VM ist lediglich ein Plugin für VS/AS

OK,

also dann nur die Entscheidung ob Microsoft oder Atmel.

Was würdest du raten?