我正准备在 Mac OS 10.9/XCode5 上使用 libdc1394 进行相机捕捉,但我遇到了 Apple Mach-O 链接器错误。我正在研究似乎对 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”,引用自:main.o ld 中的 cleanup_and_exit(__dc1394_camera**):未找到架构 x86_64 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
下面我尝试在程序中进一步移动,将上面的内容注释掉......
下面的程序在以下位置给出了类似的错误d = dc1394_new ();
: 体系结构 x86_64 的未定义符号:“_dc1394_new”,引用自:main.o ld 中的 _main:未找到体系结构 x86_64 的符号:错误:链接器命令失败,退出代码 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 开发完全陌生,并且怀疑它可能与“构建目标”有关,但这并不完全明显。这是一些基本信息的快照(抱歉有点模糊):