Jump to content

Paskalski

Members
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

Paskalski's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Ja, ich habe die compile.bat ausgeführt, wodurch eine DLL erstellt wurde. Der Schritt hat super funtioniert. Beim Versuch die DLL in Dymola/Modelica mit der Anweisung aufzurufen habe ich die Fehlermeldung mit den "undefined reference to" erhalten, welche ich am Anfang beschrieben habe.
  2. Ich versuche nochmal die genaue Problematik zu erläutern, da ich mich wohl nicht verständlich ausgedrückt habe. Um die Tinkerforge-Module mit C zu nutzen, benötigt man mehrere Einzel-Dateien, die man unter Windows wie folgt übersetzt: "gcc -o example.exe *.c -lws2_32 -ladvapi32" Meine Problematik ist, dass man unter Dymola/Modelica externen C-Code nur in folgender Form aufrufen kann: function temp_ptc input String host; input Integer port; input String uid; output Real theta; external"C" annotation ( Library={"dymosim"}, LibraryDirectory={"modelica://CallExternal/Resources/Library/"}, IncludeDirectory="modelica://CallExternal/Resources/Library/", Include="#include \"tinker.c\""); end temp_ptc; Es ist somit nicht möglich dem Compiler mitzuteilen, dass er mehrere Dateien nutzen soll. Daher habe ich versucht, dass ganze mit einer dynamischen Bibliothek zu lösen, was unter Linux auch funktioniert hat.
  3. Es gab zwei Versuche. Für die Dateien wurde das Visual Studio verwendet, um die C-Programme zu kompilieren und die DLL zu erzeugen und dann wurde versucht über direkte Befehle in der Kommandozeile die DLL zu erzeugen. Die Fehlermeldung mit den "undefined reference" war immer die gleiche! Ich brauche die DLL, weil ich die Daten in Dymola/Modleica zum simulieren einlesen möchte. Versuche ich die einzelnen Dateien zu kompilieren und auszuführen, kriege ich auch auf dem Bildschirm ein Ergebnis, allerdings kann ich in Dymola nicht .exe Dateien einlesen lassen sondern nur über eine dynamische Bibliothek den C-Code ausführen lassen! Die Datei dymosim.exe wäre dann die anschließende ausführende Datei der Simulation. Die Projektdatei ist nur weiterführend, denn ohne die DLL kann ich das Projekt nicht starten. Das Projekt ruft dann die DLL auf, aber solange diese nciht erzeugt werden kann satrtet dieses nciht. Wichtig ist ob es denn überhaupt möglich wäre eine dynamische Bibliothek aus den einzelnen Codes zu erzeugen? Sind die Implementireungen der einzelnen Funktionen nicht normalerweise in den Header Dateien vorhanden??
  4. Ich habe die Daten eines Temperatursensors mit den einzelnen angehängten Programmen auslesen und anzeigen lassen. Da ich die Daten aber über einen längeren Zeitraum brauche, habe ich die C- Programme mit den Header-Dateien in einer dynamischen Bibliothek zusammengefasst und wollte mir die Daten ausgeben lassen. Mit einem Linux-Betriebsystem funktioniert es auch, aber ich brauche die Daten für ein Simulation auf einem PC mit einem Windows-Betriebssystem und sobald ich unter Windows mit den gleichen Dateien eine dynamische Bibliothek (DLL) benutzen will, erhalte ich diese Fehlermeldung: C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x37ff): undefined reference to `ipcon_create' C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x3819): undefined reference to `ptc_create' C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x3834): undefined reference to `ipcon_connect' C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x3876): undefined reference to `ptc_get_temperature' C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x38b1): undefined reference to `ptc_destroy' C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o:dsmodel.c:(.text+0x38bc): undefined reference to `ipcon_destroy' C:\MinGW\bin\ld.exe: C:\Users\Robert\AppData\Local\Temp\ccgVTKz6.o: bad reloc address 0x0 in section `.data' C:\MinGW\bin\ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status Error generating dymosim.exe. Hat jemand solch einen Fehler schon gesehen? Vielen Dank im voraus für die Hilfe Grüße Robert bricklet_ptc.c bricklet_ptc.h ip_connection.c ip_connection.h tinker.c
×
×
  • Neu erstellen...