mikrocontroller.net

Forum: Compiler & IDEs Sourcecode in DLL konvertieren


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

wie wandelt man Sourcecode in DLL-Files um damit Funktionen noch 
aufgerufen werden können?

Danke im Voraus
Senmeis

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht ein Compiler, fast exakt genauso, wie der Compiler lauffähige 
Programme erzeugt. Der Unterschied liegt in den Einstellungen des 
Linkers, der im Fall eines Programmes Startupcode und ähnliches 
dazulinkt, im Falle einer DLL aber DLL-spezifischen Startupcode linkt 
und das Dateiformat einer DLL erzeugt.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank.

Ich habe diesen Artikel durchgelesen. Ich verwende Compiler von Keil und 
XC16x von Infineon. Gibt's Dokumente speziell für diesen Compiler? Muss 
mein Sourcecode dafür verändert werden?

Danke im Voraus
Senmeis

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich verwende Compiler von Keil und
>XC16x von Infineon.

DLL's sind was für (große) Betriebssysteme, also sowas wie Windows oder 
Linux.

Auf Mikrocontrollern ohne Betriebssystem wird das nichts. Wenn du da ein 
(Echtzeit-)Betriebssystem benutzt, daß DLL's unterstüttzt, dürfte sich 
alles wesentliche in den Dokus dazu, und in der zu den Compilern, finden 
lassen.

Oliver

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du einfach Funktions-Libraries erstellen möchtest? 
Das geht mit Keil.

Ralf

Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich habe mich geirrt.

Was ich will ist folgendes: Ich habe ein paar *.c und *.h-Files und 
möchte damit Funktions-Libraries erstellen. Der User meiner Bibliotheken 
kann nur die *.c-Datei bearbeiten, die main() enthält.

Danke im Voraus
Senmeis

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der User meiner Bibliotheken kann nur die *.c-Datei bearbeiten, die main()
> enthält.
Jo, dann ist das genau das, was ich oben beschrieben habe. Also den 
Output in Keil auf "Library" umstellen.
Die erstellte Lib bindest du dann ins Projekt mit ein, und kannst die 
darin enthaltenen Funktionen entsprechend aufrufen.

Allerdings musst du ein paar Sachen beachten. Z.B. lieferst du zu der 
Lib zwar wie gehabt ein H-File, aber Portdefinitionen können dort nicht 
neu gesetzt werden, ohne dass die Lib neu erstellt werden muss (falls 
das wichtig für dich ist) -> es geht schon, aber mit zusätzlichem 
Aufwand.

Ralf

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-Objektdatei mit dem Compiler erzeugen (also aus den .h und .c Dateien 
wird eine .o Datei, bzw. mehrere)
-Die gewünschten .o Dateien in ein Archiv packen (z.B. unter Linux geht 
das mit ar). Jetzt hat man eine .a Datei
-Diese kann man nun beim Linken mit der Option -l/name/ hinzufügen, 
wobei dann nach der Bibliothek lib/name/.a gesucht wird.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber Portdefinitionen können dort nicht neu gesetzt werden, ohne dass
> die Lib neu erstellt werden muss (falls das wichtig für dich ist)

Das gilt generell für alle Makros.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ganz generell sollte man ja auch im Header zu einer Library als Benutzer 
derselben grundsätzlich nichts ändern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.