Forum: Compiler & IDEs Sourcecode in DLL konvertieren


von Owen S. (senmeis)


Lesenswert?

Servus,

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

Danke im Voraus
Senmeis

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Klaus W. (mfgkw)


Lesenswert?


von Owen S. (senmeis)


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

von Oliver (Gast)


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

von Ralf (Gast)


Lesenswert?

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

Ralf

von Owen S. (senmeis)


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

von Ralf (Gast)


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

von Mark B. (markbrandis)


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.

von Rolf Magnus (Gast)


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.

von Klaus (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.