Использование 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, поэтому, если возможно, будьте подробны в своем ответе! Я понимаю, что это может быть связано с таргетингом сборки.


Следующим шагом было создание простого примера (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: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)


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

Программа ниже дает похожую ошибку в d = dc1394_new ();: Неопределенные символы для архитектуры x86_64:
«_dc1394_new», по ссылке с:
_main in 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 и подозреваю, что это может иметь какое-то отношение к «цели сборки», но это не совсем очевидно. Вот снимок некоторой базовой информации (извините, она немного размыта):
введите описание изображения здесь

0

Решение

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

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

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

0

Другие решения


По вопросам рекламы [email protected]