2017-03-28 3 views
0

Ich habe Antworten auf diese Frage gefunden, aber sie funktionieren nicht für mich. Ich versuche ein C++ - Projekt in Xcode zu erstellen, das externe Bibliotheken von ffmpeg und openCV verwendet, und ich kann nicht herausfinden, wie man sie verbindet. Wie empfohlen, gehe ich auf den Bildschirm "Build Phases", und es gibt einen Platz für "Link Binary with Libraries". Eine der Bibliotheken, mit denen ich verlinken muss, ist /usr/local/lib/libavutil.a. Wenn ich versuche, eine Bibliothek hinzuzufügen, erscheint eine Liste mit zwei Ordnern: "OS X 10.11" und "Developer Frameworks". Die Bibliothek, die ich brauche, befindet sich nicht in einem dieser Ordner. Ich habe versucht, auf "Add Other" zu klicken und ein Dateiauswahldialog erscheint, aber wenn ich "/usr/local/lib/libavutil.a" in das Suchfeld eintippe, akzeptiert der Dialog das nicht.Link externe Bibliothek in Xcode C++ Projekt

Ich habe festgestellt, dass die Eingabe von '-lswcale -lavcodec -lavdecice' etc. auf der "Other linker flags" Zeile in "Build Settings" funktioniert, aber es ist nicht das, was ich mir erhofft habe. Ich hatte gehofft, einen Dateiauswahldialog zu bekommen, wo ich einfach auf die Bibliotheken klicken konnte, die ich benutzen wollte.

Gibt es eine Möglichkeit zu erreichen, was ich will?

Antwort

1

Wenn ich richtig verstehe, was Sie fragen, wollen Sie einfach den Dateiauswahldialog am richtigen Ort "einstellen", Recht?

Ist dies der Fall, müssen Sie nur Cmd + Alt + G drücken, sobald Sie sich im Dateiauswahldialog befinden, nachdem Sie im Menü "Binary mit Libraries verknüpfen" auf "Add Other ..." geklickt haben. Ein Dialogfeld "Gehe zu dem Ordner:" wird angezeigt. Dort können Sie den vollständigen Pfad in die Datei oder den Ordner eingeben, den Sie suchen.

Hoffe, dass geholfen hat!

0

Nach this, können Sie versuchen:

1) Öffnen Sie das linke Feld, gehe zu "Projektname", Ziele, Build Phasen, Link-Binärdatei mit Bibliotheken und Ihrer Bibliothek auswählen.

2) Öffnen Sie das linke Feld, gehe zu "Projektname", Projekt, Header Suche Paths den Pfad schreiben, wo die Header Ihrer Bibliothek sind (die .h Dateien, in der Regel in/usr/local/include).

3) Öffnen Sie die linke Platte, gehe zu "Projektname", Projekt, Bibliothek Suche Paths, schreiben Sie den Pfad, in dem Sie Ihre Bibliotheken sind (die .a oder .dylib Dateien, in der Regel in/usr/local/lib)

Ich hoffe, Sie können bestätigen, dass dies für Xcode7 funktioniert.

Auf Schritt 1) Sie können auch:

  • unter "Link-Binary mit Bibliotheken", klicken Sie auf die Plus-Schaltfläche.

  • Klicken Sie auf "Weitere hinzufügen ..." (dies ist eine Bibliothek von Drittanbietern).

  • Wählen Sie den Dateinamen (/usr/local/lib/libavutil.a).

PS, ich nicht Flagge als Dup kann, weil that keine acepted Antwort war

+0

Ich habe das schon gemacht, aber es ist nicht ausreichend. Dies teilt dem Linker mit, wo er nach Bibliotheken suchen soll, aber nicht nach den zu verknüpfenden Bibliotheken. In der Befehlszeile würden Sie "-L/usr/local/lib" eingeben, aber Sie müssten immer noch "-lavutil, -lswscale" usw. für die Bibliotheken eingeben, die Sie verknüpfen möchten. (Es kann Hunderte von Bibliotheken in/usr/local/lib geben. Sie möchten nicht, dass der Linker nach ihnen sucht, wenn sie versuchen, ein Symbol aufzulösen.) – saulspatz

+0

@saulspatz Editiert, Zusätzliche Schritte zur Auswahl des Dateinamens – Rama

+0

Danke. Das funktioniert auch nicht für mich. Dies ist, was ich meinte, als ich sagte, dass, wenn ich den Namen der Bibliothek in das Suchfeld eintippte, der Dialog das nicht akzeptieren würde. Ich komme nie zu einem Punkt, wo ich eine Liste der Inhalte von/usr/local/lib sehe und nur auf die gewünschten klicke. – saulspatz

1

Da sonst niemand eine funktionierende Antwort zur Verfügung gestellt hat, bin ich zu dokumentieren, dass die einzige einzige, was ich gefunden habe, dass Damit können Sie die Suchpfade für die Bibliotheken unter "Bibliothekssuchpfade" festlegen und dann für jede Bibliothek im Abschnitt "Weitere Linker-Flags" ein Flag -l hinzufügen, genau wie in der Befehlszeile: enter image description here

Verwandte Themen