Странная ошибка сборки, проблема с именем класса? - PullRequest
0 голосов
/ 09 марта 2009

Я занимаюсь коротким проектом, просто чтобы поэкспериментировать с написанием без использования nib-файлов (только в личных интересах, не планируйте никогда не использовать nibs!)

Мой контроллер приложения настроен как делегат NSApp. Под - (void) applicationDidFinishLaunching: (NSNotification *) aNotification, я пытаюсь инициализировать интерфейс.

AppController.h:

#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>

@interface AppController : NSObject {

NSWindow* mainWindow;
QTMovieView* movieView;
QTCaptureSession* mainSession;
QTCaptureMovieFileOutput* output;
QTCaptureDeviceInput* video;
QTCaptureDeviceInput* audio;

}

+ (void)initialize;
- (id)init;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;

@end

Метод в AppController.m

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {


//Proceed to initialize the entire interface:

mainWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(500, 300, 700, 500)
styleMask:(NSTitledWindowMask|NSClosableWindowMask|
  NSMiniaturizableWindowMask|NSResizableWindowMask) 
backing:NSBackingStoreBuffered
defer:NO];

[mainWindow setTitle:@"Record a movie!"];

/*movieView = [[QTMovieView alloc] initWithFrame:NSMakeRect([[mainWindow contentView] bounds].origin.x + 5, 
                                                [[mainWindow contentView] bounds].origin.y + 30,
                                                    [[mainWindow contentView] bounds].size.width - 10, 
                                                    [[mainWindow contentView] bounds].size.height - 35)];*/

[[mainWindow contentView] addSubview:movieView];

[mainWindow makeKeyAndOrderFront:NSApp];

}

Закомментированная часть является источником ошибки 1, которая не отображается в текстовом редакторе, а только на панели «build»:

<pre> ".objc_class_name_QTMovieView", referenced from:  
literal-pointer@_OBJC@_cls_refs@QTMovieView in AppController.o
symbol(s) not found
collect2: Id returned 1 exit status

Кажется, здесь проблема с размещением / инициализацией экземпляра. Я могу просто объявить новый, то есть QTMovieView * test; и ничего не жалуется. Я также обнаружил, что он делает то же самое со всеми другими классами QT, когда я пытаюсь выделить / инициализировать их. Тем не менее, я смог распределить / инициализировать NSWindow просто отлично. Фреймворк находится в моем проекте, и, как вы можете видеть в моем .h файле, я включил QTKit.

Кто-нибудь знает, что происходит?

1 Ответ

4 голосов
/ 09 марта 2009

Ошибка, которую вы получаете, является ошибкой компоновщика - компоновщик (ld) не может найти код объекта каркаса для класса QTMovieView. Поэтому вы не включили фреймворк QTKit в свой проект. Если вы думаете, что у вас есть, то что-то об этом не настроено должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...