我正在尝试使用makefile将.cpp文件编译为objective-c ++,因为我的cpp文件很少有客观代码。我添加了-x objective-c ++作为编译器选项并开始在程序错误中获得stray / 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
答案 0 :(得分:0)
您在引用字符串之外有一个迷路×(乘号)。所有C / C ++都必须是ASCII,除了字符串中的内容。
注意:转换为UTF-8的ASCII是ASCII。如果utf-16那么没有引用的字符串必须是ASCII等价的,假设编译器支持utf-16。此外,文件格式可能会产生不同的代码,所产生的字符串也不同。