• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.579
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.