奇怪的构建错误,类名问题?

时间:2009-03-09 01:57:57

标签: ios objective-c xcode macos cocoa

我正在做一个简短的项目,只是为了在不使用nib文件的情况下进行实验(仅限个人兴趣,不打算永远不要使用nib!)。

我将我的app控制器设置为NSApp的委托。 Under - (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错误的来源,仅在“构建”面板中:

<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

这里的alloc / init'ing实例似乎有问题。我可以宣布一个新的,即QTMovieView * test;并没有抱怨。我还发现当我尝试分配/初始化它时,它对所有其他QT类做了同样的事情。但是,我能够分配/初始化NSWindow就好了。框架在我的项目中,正如你在我的.h文件中看到的那样,我包含了QTKit。

任何人都知道发生了什么事吗?

1 个答案:

答案 0 :(得分:4)

您获得的错误是链接器错误 - 链接器(ld)无法找到QTMovieView类的框架对象代码。因此,您尚未在项目中包含QTKit框架。如果你认为你有,那么关于它的一些东西就没有正确设置。