Api verwenden

OP #2839896
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
OP #2839909
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 ...
Gast #2839915
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.
Gast #2840052
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?
OP #2840070
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
Gast #2840094
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
OP #2840095
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
#2840131
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.
Gast #2840147
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren