Использование libdc1394 в XCode/Mac OS 10.9 дает ошибки компоновщика - неопределенные символы для архитектуры x86_64

Я готовлюсь использовать libdc1394 для захвата камеры в Mac OS 10.9/XCode5 и сталкиваюсь с ошибками Apple Mach-O Linker. Я работаю над тем, что казалось хорошими инструкциями для libdc1394 и XCode, и мне удалось найти libdc1394.dylib, в том числе и попасть в hello world, что должно означать, что все правильно подключено.

Я новичок в XCode Development, поэтому, если возможно, будьте подробны в своем ответе! Я понимаю, что это может быть связано с таргетингом сборки.


Следующим шагом было создание простого примера ( grab_color_image.c), но я получаю массу ошибок компоновщика, начиная с чего-либо в void cleanup_and_exit(dc1394camera_t *camera), который я закомментировал:

void cleanup_and_exit(dc1394camera_t *camera)
{
//    dc1394_video_set_transmission(camera, DC1394_OFF);
//    dc1394_capture_stop(camera);
//    dc1394_camera_free(camera);
//    exit(1);
}

Например, раскомментирование первой строки выше дает: * Неопределенные символы для архитектуры x86_64: "_dc1394_video_set_transmission", на которую ссылаются из: cleanup_and_exit(__dc1394_camera**) в main.o ld: символ (ы) не найден для архитектуры x86_64 clang: error: linker Сбой команды с кодом выхода 1 (используйте -v, чтобы увидеть вызов)


Ниже я попытался продвинуться дальше в программе, оставив закомментированные материалы выше...

Программа ниже дает похожую ошибку в d = dc1394_new (); : Неопределенные символы для архитектуры x86_64: "_dc1394_new", на которую ссылаются из: _main в main.o ld: символы не найдены для архитектуры x86_64 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

#include <iostream>
#include <dc1394/dc1394.h>
#include <stdio.h>
#include <stdint.h>
#include <dc1394/dc1394.h>
#include <stdlib.h>
#include <inttypes.h>

#ifndef _WIN32
#include <unistd.h>
#endif

#define IMAGE_FILE_NAME "image.ppm"

/*-----------------------------------------------------------------------
 *  Releases the cameras and exits
 *-----------------------------------------------------------------------*/
void cleanup_and_exit(dc1394camera_t *camera)
{
//    dc1394_video_set_transmission(camera, DC1394_OFF);
//    dc1394_capture_stop(camera);
//    dc1394_camera_free(camera);
//    exit(1);
}

int main(int argc, const char * argv[])
{
    FILE* imagefile;
    dc1394camera_t *camera;
    unsigned int width, height;
    dc1394video_frame_t *frame=NULL;
    //dc1394featureset_t features;
    dc1394_t * d;
    dc1394camera_list_t * list;
    dc1394error_t err;

    d = dc1394_new ();    // <-- THIS gives a linker error, the above stuff is fine
//    if (!d)
//        return 1;
//    err=dc1394_camera_enumerate (d, &list);
//    DC1394_ERR_RTN(err,"Failed to enumerate cameras");


    // insert code here...
    std::cout << "Hello, World!\n";
    return 0;
}

Как я уже упоминал ранее, я совершенно новичок в разработке XCode и подозреваю, что это может иметь какое-то отношение к "цели сборки", но это не совсем очевидно. Вот снимок некоторой базовой информации (извините, это немного размыто):

1 ответ

Мне нужно было поставить галочку на целевом членстве для libdc1394.dylib.

Нажатие libdc1394.dylib на левой стороне XCode вызывает это на правой стороне. Мне нужно было добавить целевое членство. Хотя в начальной части инструкции #include сработало, позже это не сработало, поскольку библиотека dylib не была связана с проектом, и поэтому символы не были определены для компоновщика. (или что-то типа того...)

введите описание изображения здесь

Другие вопросы по тегам