我正在尝试编写一个基于控制台的应用程序来访问 Mac OS X 10.7.5 上的佳能相机。我正在使用 XCode 4.6 版。这是我正在尝试编写的程序
#import <Foundation/Foundation.h>
#include "EDSDK.h"
#include "EDSDKErrors.h"
#include "EDSDKTypes.h"
int main()
{
@autoreleasepool {
EdsError error = EDS_ERR_OK;
EdsCameraListRef cameraList = NULL;
EdsUInt32 count = 0;
EdsDeviceInfo deviceInfo;
bool isSDKLoaded;
// Initialization of SDK
error = EdsInitializeSDK();
//Acquisition of camera list
if(error == EDS_ERR_OK)
{
isSDKLoaded = YES;
error = EdsGetCameraList(&cameraList);
}
if(cameraList != NULL) {
EdsRelease(cameraList);
cameraList = NULL;
}
}
return 0;
}
它编译成功,但是当我运行程序时,它会在 EdsGetCameraList 函数返回时崩溃。显示的错误是“dyld misaligned_stack_error”。我知道这与 MacOS X 希望堆栈是 16 字节对齐的事实有关。我使用的 SDK 仅适用于 32 位架构,因此,我已经相应地设置了架构。我尝试在 XCode 的 Build Settings 下设置“Other C flags”以包含标志“-falign-stack=assume-16-byte”。
佳能 EDSDK 附带的示例工作正常。使用的 SDK 版本是佳能在 2006-2007 年开发的版本,更新于 06-03-16。我没有其他版本信息。
以下是日志中的转储: //pastebin.com/vfDWeZnr
我可能做错了什么?
我对 Objective-C 非常陌生,因此,C 和 Objective-C 代码的混合。
谢谢!