Я пытаюсь написать консольное приложение для доступа к камере Canon в 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-битных архитектур, поэтому я настроил архитектуру соответствующим образом. Я попытался установить «Другие флаги C» в разделе «Параметры сборки» в XCode, чтобы также включить флаг «-falign-stack = accept-16-byte».
Образец, поставляемый вместе с Canon EDSDK, работает нормально. Используемая версия SDK - это версия, разработанная Canon в 2006-2007 гг., Обновленная 06-03-16. Другой информации о версии у меня нет.
Ниже приводится дамп логов: http://pastebin.com/vfDWeZnr
Что я мог делать не так?
Я действительно новичок в Objective-C и, следовательно, в смеси кода C и Objective-C.
Спасибо!