我正在尝试编写我的第一个定制Cocoa框架,我想从包装一堆功能的框架中公开一个简单的C函数,就像NSApplicationMain一样。当我直接从项目中直接导入文件时,一切都很顺利,项目建立并且我的C函数被正确调用。从定制Objective-C框架中暴露C函数
现在我有一个新的Cocoa Framework项目,其中包含的文件,我不能建立我的程序,因为我得到“符号未找到”的错误消息,专门为我的C函数。
我试过用extern在头文件中加入函数定义的前缀,但还是什么都没有。
任何人都可以给我抬头吗?我如何通过自定义Cocoa Framework公开标准C函数?
的我在做什么粗略的想法:
我的计划是使用我定制的框架:
#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
}
我原本按照这里找到的说明:http://atastypixel.com/blog/creating-applications-in-xcode-using-frameworks/ 在我的程序项目中创建一个框架项目,它也应该创建一个框架这对我的任何其他项目都是可用的。 我的项目的源代码在这里可用,tar'ed和gziped,供您检查。它只是一个7Mb的下载害羞: http://restafarian.com/stackoverflow/stackoverflow.tgz 感谢您的任何帮助和建议,您可以提供! – omarshariffdontlikeit 2010-08-14 13:01:07
问题的确是您的BDWebAppTest目标未链接到您的BDWebApplicationFramework框架(原文如此)。为了看到这一点,请在目标大纲下披露完整的依赖关系树,并特别注意“链接二进制库”步骤。你现在会看到,它只是连接到Foundation.framework。您可以通过将您的框架拖放到链接框架列表中来解决该问题。 (也可能是RegexKit,因为我假定你的项目引用它是有原因的。) – 2010-08-14 15:53:56
优秀的东西,按照描述工作。据我所知,我不应该将RegexKit与我的程序联系起来,因为它应该与我的框架相关联,因为它只是我的框架,它将在幕后使用RegexKit。 感谢您的帮助,我知道我一定错过了一些东西。我在原博客上发布了一条评论,该博客遵循了我的指示,并要求他将这一步添加到他的指示中。希望这可以帮助其他有类似问题的人。 – omarshariffdontlikeit 2010-08-15 13:08:09