Предоставление функции C из пользовательского Objective-C Framework - PullRequest
4 голосов
/ 14 августа 2010

Я пытаюсь написать свой первый собственный Cocoa Framework и хочу представить простую функцию C из среды, которая объединяет множество функциональных возможностей, во многом как NSApplicationMain.Когда я просто импортировал файлы непосредственно из проекта, все прошло нормально, проект был собран и моя функция C была вызвана правильно.

Теперь у меня есть новый проект Cocoa Framework, который содержит файлы, я не могу собрать свойпрограмма, потому что я получаю сообщения об ошибках "Symbols not found", специально для моей функции C.

Я попытался добавить префикс определения функции в заголовочном файле к extern, но все равно ничего.

Можеткто-нибудь даст мне голову?Как я могу представить стандартные функции C через пользовательский Cocoa Framework?

Грубое представление о том, что я делаю:

Моя программа, использующая мою пользовательскую среду:

#import <BDWebApplicationFramework/BDWebApplication.h>

int main (int argc, const char * argv[]) {
    return BDWebApplicationMain(argc, (const char **)argv);
}

Заголовок моего фреймворка: BDWebApplication.h

#import <Foundation/Foundation.h>

@interface BDWebApplication : NSObject {
    NSString *name;
}
@property (readwrite, copy) NSString *name;

@end

extern int BDWebApplicationMain(int argc, const char * argv[]);

Файл моего фреймворка: BDWebApplication.m

#import "BDWebApplication.h"

@implementation BDWebApplication

@synthesize name;

- (id)init
{
    [super init];
    name = @"New name";
    return self;
}

- (void)dealloc
{
    [name release];
    [super dealloc];
}

@end

int BDWebApplicationMain(int argc, const char * argv[])
{
   // Do some Obj-c stuff here
}

1 Ответ

3 голосов
/ 14 августа 2010

Проблема здесь почти наверняка скрыта в ваших настройках сборки XCode, а не в коде, который вы опубликовали (что выглядит хорошо).

Перво-наперво: вы связываетесь с вашей новой структурой? Предполагая, что это так, вы уверены, что экспортируете символы, которые вы себе представляете, когда строите фреймворк? (Существует несколько вариантов для указания этого, и некоторые из них имеют семантику, которая может удивить неосторожных.)

Что может быть более полезным в диагностике, так это полный текст стенограмм сборки Xcode для платформы и исполняемого файла.

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