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