2

我正在尝试使用makefile将.cpp文件编译为objective-c++,因为我的cpp文件中很少有目标代码。我添加了 -x objective-c++ 作为编译器选项,并开始在程序错误中出现 /327 杂散(以及 / 之后具有不同数字的许多类似错误)。错误大约是 200。但是当我将文件的编码从 unicode-8 更改为 16 时,错误会减少到 23。目前 .cpp 文件中没有 Objective-C++ 代码,但计划将来添加。当我从编译器选项中删除 -x objective-c++ 时,一切正常。并生成 .out。如果有人能告诉我为什么会发生这种情况,甚至是相同的解决方案,我会很有帮助提前谢谢

我的makefile的例子

MACHINE= $(shell uname -s)


CFLAGS?=-w -framework CoreServices -framework ApplicationServices -framework CoreFoundation -framework CoreWLAN -framework Cocoa -framework Foundation

ifeq ($(MACHINE),Darwin)
  CCLINK?= -lpthread 
else
 CCLINK?= -lpthread -lrt 
endif   

DEBUG?= -g -rdynamic -ggdb 
CCOPT= $(CFLAGS)  $(ARCH) $(PROF)
CC =g++ -x objective-c++
AR = ar rcs
#lib name
SLIB_NAME=myapplib
EXENAME = myapp.out
OBJDIR = build

OBJLIB := $(addprefix $(OBJDIR)/... all .o files)


SS_OBJ := $(addprefix $(OBJDIR)/,myapp.o  )

vpath %.cpp path to my .cpp files



INC  = include files


subsystem:

     make all

$(OBJLIB) : |$(OBJDIR)
$(OBJDIR):
     mkdir $(OBJDIR) 


$(OBJDIR)/%.o:%.cpp 
    $(CC) -c  $(INC) $(CCOPT) $(DEBUG) $(CCLINK) $< -o $@


all:  $(OBJLIB) $(CLI_OBJ) $(SS_OBJ)
    $(AR)  lib$(SLIB_NAME).a $(OBJLIB)
    $(CC)  $(INC) $(CCOPT) $(SS_OBJ) $(DEBUG) $(CCLINK) -l$(SLIB_NAME) -L ./ -o $(OBJDIR)/$(EXENAME) 


clean:
    rm -rf $(OBJDIR)/*
dep:
    $(CC) -MM *.cpp
4

1 回答 1

0

您在带引号的字符串之外有一个杂散的 ×(乘号)。所有 C/C++ 都必须是 ASCII,字符串中的内容除外。

注意:转换为 UTF-8 的 ASCII 是 ASCII。如果 utf-16 则未引用的字符串必须是 ASCII 等效的,假设编译器支持 utf-16。此外,to 文件格式可能会产生不同的代码,产生的字符串也不同。

于 2012-06-27T15:12:45.093 回答