我正在做一个简短的项目,只是为了在不使用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。
任何人都知道发生了什么事吗?
答案 0 :(得分:4)
您获得的错误是链接器错误 - 链接器(ld
)无法找到QTMovieView
类的框架对象代码。因此,您尚未在项目中包含QTKit框架。如果你认为你有,那么关于它的一些东西就没有正确设置。