用GCC编译*.mm

 郑云雪 发布于 2022-12-28 09:52

我在.mm文件中制作了一个非常简单的Objective-C/C程序,但我不知道如何链接Objective-C库/框架.我只需要Foundation框架.我怎样才能做到这一点?我不想在Xcode中这样做,因为Xcode总是创建一个包含项目文件的整个文件夹,然后将产品隐藏在一个难以找到的文件夹中,我觉得它是用于单文件程序的大量内存.

码:

#include 
#import 

NSString* charToNSString(char * c){
    return [NSString stringWithUTF8String:c];
}

const char* NSStringToChar(NSString *str){
    return [str UTF8String];
}

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

编译: gcc file.mm

输出:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_NSString", referenced from:
      objc-class-ref in file-4bd3e4.o
  "_objc_msgSend", referenced from:
      charToNSString(char*) in file-4bd3e4.o
      NSStringToChar(NSString*) in file-4bd3e4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Inder Kumar .. 7

$ gcc -framework Foundation main.mm

虽然上面的命令工作得很好,但我建议你创建Makefile

$vim Makefile

粘贴下面的内容

CC=gcc

FRAMEWORKS:= -framework Foundation

SOURCE=main.mm

OUT=-o main

all:
        $(CC) $(SOURCE) $(FRAMEWORKS) $(OUT)
#   ^ this is a tab not spaces, if you give spaces here it will through error :*** missing separator

然后运行

$ make

看看这个关于Makefile的简单教程

1 个回答
  • $ gcc -framework Foundation main.mm
    

    虽然上面的命令工作得很好,但我建议你创建Makefile

    $vim Makefile
    

    粘贴下面的内容

    CC=gcc
    
    FRAMEWORKS:= -framework Foundation
    
    SOURCE=main.mm
    
    OUT=-o main
    
    all:
            $(CC) $(SOURCE) $(FRAMEWORKS) $(OUT)
    #   ^ this is a tab not spaces, if you give spaces here it will through error :*** missing separator
    

    然后运行

    $ make
    

    看看这个关于Makefile的简单教程

    2022-12-28 09:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有