• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Problem mit WebView / WebKit

ProAtom

Morgenduft
Registriert
02.12.06
Beiträge
170
Hallo,

ich bin grade dabei, ein bisschen mit dem Chromium Tabs (https://github.com/rsms/chromium-tabs/blob/master/README.md) zu spielen. Nun habe ich gedacht, kann man ja mal den NSTextView durch einen WebView ersetzen. Also habe ich es getan und auch das WebKit Framework hinzugefügt. Der Code sieht nun so aus:

Code:
#import "MyTabContents.h"
#import "common.h"
#import <WebKit/WebKit.h>


@implementation MyTabContents


-(id)initWithBaseTabContents:(CTTabContents*)baseContents {
  if (!(self = [super initWithBaseTabContents:baseContents])) return nil;


  // Setup WebView


  // Create a simple WebView
  WebView* tv = [[WebView alloc] initWithFrame:NSZeroRect];
  [tv setAutoresizingMask:                  NSViewMaxYMargin|
                          NSViewMinXMargin|NSViewWidthSizable|NSViewMaxXMargin|
                                           NSViewHeightSizable|
                                           NSViewMinYMargin];


  // Create a NSScrollView for WebView
  NSScrollView *sv = [[NSScrollView alloc] initWithFrame:NSZeroRect];
  [sv setDocumentView:tv];
  [sv setHasVerticalScroller:YES];


  // Set the NSScrollView as the view
  self.view = sv;


  return self;
}


-(void)viewFrameDidChange:(NSRect)newFrame {
  // We need to recalculate the frame of the WebView when the frame changes.
  // This happens when a tab is created and when it's moved between windows.
  [super viewFrameDidChange:newFrame];
  NSClipView* clipView = [[view_ subviews] objectAtIndex:0];
  WebView* tv = [[clipView subviews] objectAtIndex:0];
  NSRect frame = NSZeroRect;
  frame.size = [(NSScrollView*)(view_) contentSize];
  [tv setFrame:frame];
}

Doch wenn ich das ganze durch den Compiler jage, kommt folgender Error raus:

Code:
Ld "/Users/jakobmeyn/Desktop/Debug/chromium-tabs-cnxsgndutxlfgbgtbbezydaqlphu/Build/Products/Debug/Chromium Tabs.app/Contents/MacOS/Chromium Tabs" normal i386
    cd /Users/jakobmeyn/Desktop/chromium-tabs-master
    setenv MACOSX_DEPLOYMENT_TARGET 10.7
    /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-g++-4.2 -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -L/Users/jakobmeyn/Desktop/Debug/chromium-tabs-cnxsgndutxlfgbgtbbezydaqlphu/Build/Products/Debug -F/Users/jakobmeyn/Desktop/Debug/chromium-tabs-cnxsgndutxlfgbgtbbezydaqlphu/Build/Products/Debug -filelist "/Users/jakobmeyn/Desktop/Debug/chromium-tabs-cnxsgndutxlfgbgtbbezydaqlphu/Build/Intermediates/chromium-tabs.build/Debug/Chromium Tabs.build/Objects-normal/i386/Chromium Tabs.LinkFileList" -Xlinker -rpath -Xlinker "@loader_path/../Frameworks" -mmacosx-version-min=10.7 -fobjc-link-runtime -framework Cocoa -framework ChromiumTabs -o "/Users/jakobmeyn/Desktop/Debug/chromium-tabs-cnxsgndutxlfgbgtbbezydaqlphu/Build/Products/Debug/Chromium Tabs.app/Contents/MacOS/Chromium Tabs"


Undefined symbols for architecture i386:
  ".objc_class_name_WebView", referenced from:
      pointer-to-literal-objc-class-name in MyTabContents.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Hab ich da einen Denkfehler drin? Vielleicht hat ja einer von Euch noch eine Idee...

Gruß,
ProAtom

P.S.: Ich hab OS X 10.8.2 und Xcode 4.5.2
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.574
An dem Compiler-Aufruf kann man sehen, dass Du nur das ChromiumTabs-Framework hinzugefügt hast, nicht jedoch das WebKit-Framework. Der Linker findet deshalb die Klasse WebView nicht.

Du musst den Ordner "/System/Library/Frameworks/WebKit.framework" in die Rubrik "Frameworks" Deines Projektes ziehen, damit Xcode "weiß", dass Du auch das WebKit verwenden willst.