2

.cppファイルのいくつかが目的コードを持っているので、makefileを使用して.cppファイルをobjective-c++としてコンパイルしようとしています。コンパイラオプションとして-xobjective-c++を追加し、プログラムエラー(および/の後に異なる番号を持つ多くの同様のエラー)で/327が迷い始めました。エラーは約200です。しかし、ファイルのエンコーディングをunicode-8から16に変更すると、エラーは23に減少します。現在.cppファイルにはobjective-c ++コードはありませんが、将来追加する予定です。complierオプションから-xobjective-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 の場合、コンパイラが utf-16 をサポートしていると仮定すると、引用符で囲まれていない文字列は ASCII と同等でなければなりません。また、to ファイル形式は、生成される文字列が異なる、異なるコードを生成する場合があります。

于 2012-06-27T15:12:45.093 に答える