c - 从自定义 Objective-C 框架公开 C 函数

标签 c objective-c frameworks

我正在尝试编写我的第一个自定义 Cocoa 框架,我想从框架中公开一个简单的 C 函数,它包含了一堆功能,就像 NSApplicationMain 所做的那样。当我直接从项目中直接导入文件时,一切正常,项目已构建并且我的 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
}

最佳答案

这里的问题几乎肯定存在于您的 Xcode build设置中,而不是存在于您发布的代码中(看起来不错)。

首先要做的是:您是否链接到您的新框架?假设您是,您确定在构建框架时确实导出了您认为的符号吗? (有很多选项可以指定这一点,其中一些选项的语义可能会让粗心的人大吃一惊。)

框架和可执行文件的 Xcode 构建脚本的全文对帮助您诊断更有用。

关于c - 从自定义 Objective-C 框架公开 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481184/

相关文章:

objective-c - 如何在继续之前等待过去的 dispatch_async?

objective-c - Xcode 4.2,无法运行单元测试

swift - 使用 Swift 的私有(private) Cocoapod

macos - CMake:将框架复制到 App Bundle

javascript - 实现支持 JavaScript 的网站无需 JavaScript 也能运行的技术

c - 操作字符串时出现段错误?

c++ - 如何设置 CreateFile() 打开 COM 端口时将使用的 DTR/RTS 状态

c - 我的结构在哪个文件中定义?

c - 具有多个字符数组问题的结构

iphone - 比 AVAudioPlayer 更快的替代品?