1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

libusb und Objective-C?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Westbär, 18.06.08.

  1. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Hallo,
    Ich hab vor ein Programm in ObjC zu realisieren, welches ich vorher schon in C geschrieben habe. Da ich mit einem USB Device kommuniziere würde ich gerne libusb benutzen, da es ein einfaches und schönes Interface für das ansprechen von USB Devices ist.

    Nun will ich libusb auch in Cocoa/ObjC Code integrieren. Leider bin ich daran gescheitert. Ich konnte es zwar linken (mit linker-flags und gcc-flags im Xcode angepasst) jedoch gab es mir immer andere Referenzierungsfehler.

    Gibt es eine ähnliche API für USB in Cocoa oder kann ich libusb mit Cocoa nutzen, wenn ja, wie?
    (Ich würde mal libusb + Cocoa bevorzugen).

    Ich hoffe man versteht mich,
    Gruß
     
  2. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ich weiss nicht, was Dein Problem ist. Libusb in Cocoa sollte problemlos funktionieren

    Alex
     
  3. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    Du siehst doch, dass er da einige Referenzierungsprobleme hat. Vllt schreibst du mal, was du gemacht hast, um libusb zu benutzen.
     
  4. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Wenn er nicht sagt, welche Fehler er hat kann ich wenig sagen.

    libusb.a (natürlich universal, und selbstverständlich das IOKit.framework) linken, fertig.

    Alex
     
  5. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Ok, also ich hab folgendes gemacht:
    - Project > Edit Project Settings > Build > linker-flags > other linker flags > "-L/opt/local/lib -lusb -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-prebind"

    - Project > Edit Project Settings > Build > gcc 4.0 language > other gcc flags > "-lusb -I/opt/local/include"

    Danach in den Xcode Preferencen noch /opt/local/include und /opt/local/lib unter "Open Quickly" hinzugefügt.

    Nachdem hab ich in meinen AppController.m die usb.h eingebunden und in der ersten IBAction usb_init(); angesprochen. Sollte doch reichen?

    Jetzt kommt der Fehler:
    [​IMG]

    // EDIT: Sorry, wegen falschen Attachment

    Hab jetz alles erklärt was ich gemacht habe,
    Gruß
     

    Anhänge:

  6. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Da steht es doch: /opt/local/lib/libusb.dylib IS NOT OF REQUIRED ARCHITECHTURE

    Du versuchst also, eine PPC lib in einer x86 App (oder umgekehrt) zu verwenden.

    Im übrigen sieht /opt/local nach Fink oder sowas aus. Ich baue meine Sachen ja lieber selbst, Da-Weiss-Man-Was-Man-Hat™ ;)

    Alex
     
  7. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    In dem Fall oder sowas, nämlich MacPorts (formerly known as DarwinPorts). Fink installiert üblicherweise in /sw.
    Gruß Pepi
     
  8. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Noch ein Tip: Wenn Du nicht nur für Dich selbst, und nicht nur für andere Entwickler entwickelst, rate ich von der Verwendung von libusb.dylib ab. Zumindest bist 10.4 war das Suchverhalten von OS X für dynamische Libraries notorisch schlecht. Deshalb rate ich Dir, libusb.a statisch zu linken.

    Alex
     
  9. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Ich seh irgendwie gar nicht mehr durch.
    libusb hab ich jetz übers Terminal gebacken. Also in Xcode die verlinkungen geändert. Nein, er will noch immer auf /opt/local/... zugreifen. Also nur mehr -I/usr/local/include eingetragen und die libusb.a als Framework genommen und bei Xcode in Linked Frameworks reingehaun. Nein, geht noch immer nicht. Mir ist die PPC Unterstützung ja egal.

    Ich arbeite übrigens alleine an dem Programm.
     
  10. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Was ich anbieten kann ist ein beispielprojekt:

    Alex
     

    Anhänge:

  11. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Vielen Dank, aber da kommen die selben Fehler raus. o_O
     
  12. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Bitte mal posten, ich bin verwirrt

    Alex
     
  13. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Siehe Attachment :)
     

    Anhänge:

  14. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Argh, ja, das ist die verschlimmbesserung von Xcode 3: Dein /usr/local Verzeichnis wird in das SDK kopiert, deshalb versucht er auf die libusb.dylib mit der falschen Arch zuzugreifen.

    Entfern die mal. Wo kommt die eigentlich her?

    Alex
     
  15. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Jo, /usr/local/lib wurde in das SDK Verzeichnis gesymlinkt.
    Hab nun die Datei gelöscht und siehe da, es funktioniert.

    Vielen, Vielen, Vielen Dank an alle und ganz besonders an below :)
     

Diese Seite empfehlen