Page 1 of 1

Kompilierungsfehler beim Erzeugen eines C-Programmes

Posted: Tue 22. Sep 2020, 12:27
by gianni
Liebe Forumsmitglieder, Lieber Herr Jetter!

Ich möchte aus einem trainierten Netz C-Code erzeugen.
Bei diesem Netz verwende ich für die Neuronen des Hidden und Output Layers:
INPUT FUNCTION: AVG
ACTIVATION FUNCTION: LOGISTIC

Wenn ich dieses Netz kompiliere bekomme ich folgende Fehlermeldung:

||=== Build: Debug in NN_ENG1_5679_LOGAVG_202021 (compiler: GNU GCC Compiler) ===|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/main.c||In function ‘main’:|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/main.c|26|warning: ‘inputwert’ is used uninitialized in this function [-Wuninitialized]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|38|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|38|note: (near initialization for ‘NEURON_PARMS’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|114|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|114|note: (near initialization for ‘NEURON_PARMS_HIDDEN’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|144|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|144|note: (near initialization for ‘NEURON_PARMS_OUTPUT’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|150|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|150|note: (near initialization for ‘NEURAL_LINK_PARMS’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c||In function ‘NeuronPropagate’:|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|warning: implicit declaration of function ‘CalculateInputRand’ [-Wimplicit-function-declaration]|
obj/Debug/Neuron.o||In function `NeuronPropagate':|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|undefined reference to `CalculateInputRand'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|

Leider sind meine C-Kenntnisse bescheiden. Hat irgendwer eine Idee oder einen Hinweis für mich, wie ich das beheben kann bzw. was ich falsch mache?

Liebe Grüsse
Gianni

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Posted: Wed 23. Sep 2020, 21:11
by TJetter
Hallo Gianni,

da ich über Ihre Build-Umgebung nichts weiß, ist es schwierig, etwas dazu zu sagen.
Gerne können Sie mir Ihre C/h Dateien einmal senden und ich kann prüfen, ob sie unter Visual Studio baubar sind. Sie verwenden zwar GNU, ich hätte damit aber prinzipiell keine Probleme erwartet.

Haben Sie zu Ihrem Projekt denn auch die Dateien der MemBrain C-Code Library hinzugefügt? Siehe MemBrain Hilfe (F1) im Abschnitt:
Source Code Generation --> C-Code --> Build Your Application

Viele Grüße

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Posted: Thu 24. Sep 2020, 09:55
by gianni
Sehr geehrter Herr Jetter!

Danke für die Antwort und die angebotene Hilfe.

Hier ein Paar Informationen zu meiner Build Umgebung:
Der C-Code für das Netz wird mit der Membrain Version V11.05.01.00 erzeugt.
Der Rechner für das Kompilieren des Projektes läuft mit Debian 9. Zum Kompilieren verwende ich die IDE "Code::Blocks". Die Dateien der MemBrain C-Code Library sind hinzugefügt.

Bis jetzt hat das Kompilieren in dieser Umgebung immer funktioniert. Die einzige Änderung zum bisher Funktionierenden ist, dass ich diesmal die INPUT FUNCTION: AVG anstatt der INPUT FUNCTION: SUM im Netz verwende.

Wenn ich die Fehlermeldung des Kompilers richtig interpretiere beschwert er sich über die Zeile 310 im Programm Neuron.c aus der C-Code Library.
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|undefined reference to `CalculateInputRand'|
||error: ld returned 1 exit status|

Im Anhang finden Sie alle Dateien die ich zum Kompilieren des Projektes verwende (die Datei main.c habe ich mit Ihrer tatkräftigen Unterstützung selbst gebastelt. Alle anderen Dateien stammen unverändert von membrain). Darüber hinaus habe ich Ihnen auch die Membrain-Netzwerkdatei hinzugefügt.

Wenn es Ihre Zeit erlaubt würde ich mich sehr über Ihre angebotene Hilfestellung freuen.
Liebe Grüße
Gianni
Membrain_Komp.zip
(51.9 KiB) Downloaded 397 times

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Posted: Fri 25. Sep 2020, 07:07
by TJetter
Hallo Gianni,

der Fehler lag diesmal bei MemBrain bzw. einer fehlenden Präprozessordirektive in der C Code Library. Bitte die Datei Neuron.c durch die Version hier im Anhang ersetzen. Mit der nächsten Version von MemBrain wird diese natürlich automatisch enthalten sein und bei der Installation durch die korrekte Version ersetzt.

Viele Grüße und Danke für die Benachrichtigung zu dem Fehler!

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Posted: Fri 25. Sep 2020, 09:32
by gianni
Liebe Herr Jetter!

Herzlichen Dank für Ihre rasche Reaktion. Mit der neuen Neuron.c funktioniert auch bei mir wieder alles in gewohnter Weise.

Liebe Grüße!
Gianni