Forum: PC-Programmierung Api verwenden


von Jan L. (jan_l)


Lesenswert?

Guten Morgen,

ich weiß nicht ob man das so über einen Kamm scheren kann aber ich 
beschreibe einfach mal mein Problem:

Ich habe in meinem Praktikum das MPU9150 SDK von Invensense zu Verfügung 
bekommen, da ist eine API dabei.

Soweit so gut.

Also nehme ich mir einfach meine .h´s die dabei sind include sie. Wenn 
ich jetzt die Funktionen daraus aufrufen will bekomme ich leider immer 
einen link error...

mach ich da irgendwas programmiertechnisch falsch oder bräuchtet ihr für 
Hilfestellung genauere Informationen.

Viele Grüße

von Max (Gast)


Lesenswert?

Du hast noch linker-objekte bekommen (wenn nicht dann ist der Hersteller 
unfähig) die musst du beim linker-call mitnehmen...

von Jan L. (jan_l)


Lesenswert?

Ok werd ich mal schaun, mein problem is einfach das ich in C einfach 
nicht der crack bin xD aber das scheint meinem Chef nicht zu 
intressieren xD

wo mach ich denn den linker-call, wie sehen linker-objekte aus und wie 
nehme ich die dann mit ...

leider spuckt googel mir da nichts richtiges aus ...

von UR-Schmitt (Gast)


Lesenswert?

Das sind doch absolute Basics.
Eine API besteht aus Code, aber nicht aus Source code sondern in 
compilierter Form. Also in Form von Objekten und/oder Bibliotheken.
Und wenn dein Programm die benutzen soll musst du die dazulinken.

Besorg dir einen Kerninghan Ritchie und lese die Basics, die sind auch 
noch in Zeiten von Clicki Bunti Zusammenschubs statt Programmieren 
nützlich.

von Jan L. (jan_l)


Angehängte Dateien:

Lesenswert?

hab mal das was ich vom anbieter runterladen kann hier mit 
reingestellt...

das ist ein codecomposer studio projekt soweit ich das verstanden habe 
und ich werde einfach nicht schlau daraus was ich davon jetzt brauche, 
wenn ich ein eigenes projekt erstellen will...

von Borislav B. (boris_b)


Lesenswert?

Du musst vermutlich zwei Dinge tun:
1. Header Files in dein Projekt einbinden und gegen diese kompilieren
2. Dem Linker sagen, dass er gegen das .lib file linken soll

Beides kannst du sicher in deiner IDE einstellen (keine Ahnung was du da 
benutzt).

von Programmierer (Gast)


Lesenswert?

Hab mir das zip nicht angeschaut. Die Vorbeter haben dir ja schon zu 
erklären versucht, dass das Header file nur Text ist, und du für ein 
lauffähiges Programm auch den object code benötigst. Den musst du 
entweder aus den sourcen selbst bauen oder vom Lieferanten besorgen. Zu 
guter letzt musst du dem Linker dann noch mitteilen, wo er das object 
dile findet.

Das sind wirklich Grundlagen: Wie baut ein c compiler Programme? Welche 
Aufgaben übernehmen Präprozessor und Linker? Was sind C Stamdard 
Libraries? Wie baue oder verwende ich eigene Libs?

von Klaus W. (mfgkw)


Lesenswert?

Außerdem könnte es zu deiner API ja auch Beispiele geben, die man mal 
probieren kann, oder schlimmstenfalls eine eventuelle Doku lesen. 
Vielleicht verrät der Hersteller sogar, wie die Beispiele zu bauen sind.

von Jan L. (jan_l)


Lesenswert?

das is ja ein bespiel das problem damit ist das es über code composer 
studio läuft... da installier ich grade die demo das 2 mal weil es 
einfach nicht läuft...

und in den super dokus von denen stehen auch nur die api module die ja 
schön und gut sind aber mir leider nichts bringen solang ich die api 
nicht eingebunden bekomm xD

von UR-Schmitt (Gast)


Lesenswert?

Jan L. schrieb:
> MPU9150 SDK von Invensense zu Verfügung bekommen,

Jan L. schrieb:
> hab mal das was ich vom anbieter runterladen kann hier mit
> reingestellt...

Das passt nicht zusammen. Wenn du ein SDK zur Verfügung hast sollte da 
ein .h Verzeichnis, ein obj oder lib Verzeichnis und Doku dabei sein.

von Sebastian-L (Gast)


Lesenswert?

Jan L. schrieb:
> Ok werd ich mal schaun, mein problem is einfach das ich in C einfach
> nicht der crack bin xD aber das scheint meinem Chef nicht zu
> intressieren xD

Dann Laufen hier dein paar dinge falsch üder die ich allerdings nur 
mutmaßen kann.

1. Es wird mal wieder ein E-techniker der "0" Ahnung von programmieren 
hat, für zwecke missbraucht für die man eigentlich einen Inforamtiker 
benötigt.

2. Du hättest doch dir mehr Mühe in Programmieren geben sollen und nicht 
immmer die vorgefertigten Startprojekte aus 
Mikrocontroller-programmierung benutzen sollen um deine Praktika 
abzulegen.

3. Wenns deinen chef nicht interessiert und 1 & 2 zutrifft, bist du 
selber schuld und du solltest das beste drauß machen ohne ein schlechtes 
zeugnis zu bekommen. wenn 1 & 2 nicht zutrifft und du nur die IDE nicht 
verstehst sollte man doch am besten zum Chef gehen und diesen Punkt 
ansprechen, denn das hat wenig mit C zu tun.

GL HF

von Jan L. (jan_l)


Lesenswert?

also was ich bekommen hab nach dem ich das bestellt hab war einfach nur 
das board auf der web seite gibt es dann noch ein test programm und in 
dem gibt es eine .lib datei ...

mit der doku ist das so ne sache es unterschiedliche und es ist sehr 
undurchsichtig welche die richtige ist XD

von Jan L. (jan_l)


Lesenswert?

punkt 2 trifft mehr oder weniger zu xD aber das hatte ich eigendlich 
auch schon im bewerbungsgespräch klar gemacht... nur ist das hier wohl 
untergegangen nunja mal sehn was ich mit den tipps und dem lieben 
internet jetzt so alles machen kann...

von Karl H. (kbuchegg)


Lesenswert?

In deinem Zip-File ist ein eMP.lib
Ich schätze mal, dass das die Library sein wird, in denen die 
Implementierungen stecken, deren Prototypen durch die Include Files 
beschrieben werden.


> punkt 2 trifft mehr oder weniger zu
Dein Pech, dass wir in diesem Forum dafür eher weniger Verständnis 
haben.

von Frank (Gast)


Lesenswert?

Hallo Jan

Das einbinden einer API erfolgt in folgenden Schritten:

1. aus der *.DLL eine *.lib erstellen falls die nicht mitgelifert wird
   z.B. mit importlib (Builder)
2. einbinden der *.h und *.lib in das Projekt (statisches Linken)
   man kann auch dynamisch, ich persönlich ziehe statisch vor.
3. Definition der Prototypen im Projekt falls diese nicht in der *.h 
sind
   z.B. extern "C" int dllfunc(char *buffer);
   hier muss die Aufrufkonvention berücksichtigt werden, d.h wie die
   Parameter auf den Stack gelegt werden und wie bereinigt.
   z.B. WINAPI Pascal oder "C"
4. Project linken und dann passt das.
5. Die *.dll muss natürlich noch ins Installationsprogramm eingebaut 
werden.
   sonnst gibts ne Fehlermeldung beim Programmaufruf.

Gruß Frank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank schrieb:
> 1. aus der *.DLL eine *.lib erstellen falls die nicht mitgelifert wird
>    z.B. mit importlib (Builder)

Sofern überhaupt eine DLL verwendet wird.

Ist das nicht der Fall, entfällt dieser Punkt und Deine restlichen 
DLL-spezifischen Hinweise sind dann irreführend.

von Jan L. (jan_l)


Lesenswert?

also so wie ich das sehe haben wir eh nur eine .lib bekommen...

werd mich nach der mittagspause mal dransetzten XD

von Rolf Magnus (Gast)


Lesenswert?

Daß da irgendwas mit DLLs zu tun ist, halte ich für unwahrscheinlich, 
wenn man bedenkt, daß das ganze offensichtlich für einen MSP430 geacht 
ist.

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.