OSX:GLUT窗口永远不会出现

时间:2011-11-24 00:03:56

标签: c++ macos sdl glut macports

我正在尝试在我的Mac上运行ORTS以进行学校项目。表面上看它是跨平台的,但我不知道它是否曾在OSX上进行过适当的测试。经过很多困难,我设法让它编译,但它仍然不能正常工作。

当我运行ortsg应用程序(即OpenGL图形界面)时,终端输出指示游戏启动,加载其资产并正确运行。但是,实际的游戏窗口永远不会出现。任何问题的唯一可能指示是以下消息:

  

2011-11-23 16:52:33.513 ortsg [4565:107] GLUT警告:第二次调用glutInit。

除了那条消息之外,所有输出都与我在学校的Slackware Linux机器上运行时看到的完全相同,游戏运行良好。 (不幸的是,我在这些机器上工作是相当不方便的,因此我试图在OSX上运行它。)我可以通过在glutInit中注释掉apps/ortsg/src/ortsg_main.C的来电来摆脱这个警告,这似乎没有引入任何其他问题,但游戏窗口仍然没有显示。

我似乎无法找到任何人在Google上遇到类似问题的报道。我不希望SO上的任何人对ORTS非常熟悉,所以我的问题如下:

  1. 是否存在可能导致GLUT窗口无法显示的常见情况,特别是在OSX上?
  2. GLUT是否提供调试此类问题的任何工具?
  3. 编辑:根据JimN的要求,这里有一些GLUT初始化代码......

    // From apps/ortsg/src/ortsg_main.C
    int main(int argc, char **argv)
    {
      char mydir[81];
      getcwd(mydir, 80);
      glutInit(&argc, argv);
      chdir(mydir);
      // ...
    }
    
    // From libs/gfxclient/src/GfxInit.C
    void glutVisibilityDebug(int state)
    {
      if(state == GLUT_VISIBLE)
        cout << "Window is visible" << endl;
      else if(state == GLUT_NOT_VISIBLE)
        cout << "Window is invisible" << endl;
      else
        cout << "Window state unknown";
    }
    
    void GfxModule::init_GLUT_window()
    {
      cerr << "INITIALIZE GLUT WINDOW" << endl;
      GfxGlutAdaptor::set_client(this);
    
      glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_ALPHA);
    
      // the window starts near the upper left corner of the screen
      glutInitWindowPosition(opt.win_x, opt.win_y);
      glutInitWindowSize(opt.win_w, opt.win_h);
    
      // Open a window
      glutCreateWindow(opt.title.c_str());
    
      // Register the splash as the draw routing until
      glutDisplayFunc   (GfxGlutAdaptor::splash);
      glutVisibilityFunc(glutVisibilityDebug);
    
      if (opt.full_screen) glutFullScreen();
    }
    

    我添加了glutVisibilityDebug函数,看看我是否可以确定GLUT认为窗口的可见性状态是什么,但是我的调试语句都没有打印过。我刚刚想到的其他东西可能有助于调试这个。我曾尝试用一个函数替换glutDisplayFunc,该函数只是将“glutDislplayFunc被调用”打印到stderr。我注意到只有在我退出应用程序时才会打印文本。

1 个答案:

答案 0 :(得分:2)

我从2011年11月26日起下载了daily snapshot,然后在我的Mac上使用brew安装了所有依赖项。

执行export OSTYPE=DARWIN后跟make initmake。我在 makefile

上修复了几个编译问题
# $Id: makefile 10648 2011-10-06 15:46:07Z mburo $
#  
# This is an ORTS file (c) Michael Buro, licensed under the GPL

# This make file works for systems which use gcc
#
# - shell variable OSTYPE must be set in your shell rc file as follows:
# 
#   if LINUX matches uppercase($OSTYPE) => Linux
#   if DARWIN matches                   => Mac OS X
#   if CYGWIN matches                   => Cygwin (gcc on Windows)
#   if MSYS   matches                   => MinGW (gcc on Windows)
#
#   check that value with echo $OSTYPE and set it in your shell resource
#   file if above words don't match. Don't forget export OSTYPE when using sh or bash
#
#   I use:  OSTYPE=`uname`
#
# - ORTS_MTUNE = i686 athlon-xp pentium-m etc.
#     if set, -mtune=$(ORTS_MTUNE) is added to compiler options
#
# - set GCC_PRECOMP to 1 if you want to use precompiled header files (gcc >= 3.4)
#
# - adjust SDL/X paths if necessary
#
# - for non-gcc compilers try -DHAS_TYPEOF=0 if typeof causes trouble
#
# - make MDBG=1 ...    displays the entire compiler/linker invocation lines
#
# - make clean         removes make generated files
# - make cleanobj      removes all .o files
#
# - make [MODE=dbg]    compiles targets in debug mode (no STL debug!)
#
# - make MODE=opt      compiles with optimizations
#
# - make MODE=bp       compiles with bprof info
#
# - make MODE=gprof    compiles with gprof info
#
# - make MODE=stldbg   compiles optimized stl debug version
#
# - make <app>         creates application bin/<app>  (omit prefix bin/ !)
#                      use periods in <app> in place of slashes for applications
#                      within subdirectories (e.g. "make rtscomp06.game2.simtest")
#
# - make list          displays a list of all registered applications
#
# - make init          creates necessary dep+bin+obj directories and links
#
# - make               creates all applications
#
# - shell variable ORTS_MODE defines the default compile mode
#   if not set, the passed MODE= parameter or dbg will be used, if MODE is not passed
#   otherwise ORTS_MODE will be used
#
# issues: 
#
#  - all include files are used (only using library includes would be better)
#
# new:
#
# applications and libraries can now name their individual external library dependencies
# (libs + headers)     
# see: apps/*/src/app.mk and libs/*/src/lib.mk, esp. libs/gfxclient/src/lib.mk
#
# todo: adjust mac/cygwin to new libary setting


# supported substrings of OSTYPE
# The following words must be uppercase
# If they are found in the uppercased OSTYPE variable
# the particular O/S matches
OSTYPE_LINUX  := LINUX
OSTYPE_MAC    := DARWIN
OSTYPE_CYGWIN := CYGWIN
OSTYPE_MINGW  := MSYS

# convert OSTYPE to uppercase
OSTYPE := $(shell echo -n "$(OSTYPE)" | tr a-z A-Z )
#$(warning OSTYPE=$(OSTYPE))
#OSTYPE := LINUX

# -DOS_LINUX or -DOS_MAC or -DOS_CYGWIN is passed to g++
# also set: OS_LINUX, OS_CYGWIN, OS_MAC := 1 resp.
# MinGW uses OS_LINUX for now.

# tar file name
PROJ := orts

# directories to be excluded from snapshot tar file

# no longer needed SNAPSHOT_EXCLUDE := libs/mapabstr apps/mapabs apps/polypath apps/hpastar

# special targets
EXCL_INC := clean init cleanobj tar dep rmdeps list tar snapshot rpm

# libraries
#LIB_DIRS := kernel network serverclient gfxclient pathfind osl mapabstr path ortsnet ai/low dcdt/se dcdt/sr newpath
#LIB_DIRS := $(wildcard libs/*) libs/dcdt/se libs/dcdt/sr libs/ai/low
LIB_DIRS := $(wildcard libs/*/src) $(wildcard libs/*/*/src)
#$(warning LIBS $(LIB_DIRS))

# sub-projects
ifeq ("$(MAKECMDGOALS)","")
APP_DIRS := orts ortsg#  built by default (do not edit)
else
APP_DIRS := $(MAKECMDGOALS)# build the passed on application
endif

FILT := $(filter $(EXCL_INC),$(MAKECMDGOALS))

ifneq ("$(FILT)","")
APP_DIRS := 
endif

#MAKECMDGOALS := compile_gch link_gch $(MAKECMDGOALS)
#$(warning making $(MAKECMDGOALS) ...)

# $(warning making $(APP_DIRS) ...)

.PHONY: all ALWAYS $(EXCL_INC) $(APP_DIRS) init

# where dependencies are stored (change also in dependency command (***) below)
#
DEP := dep

#$(error $(vp))

# make libraries and applications, make and link gch file first
all: all_end

# create tar file of the entire project
tar:
    @ $(MAKE) clean; cd ..; tar cfz ../$(PROJ).tgz $(PROJ)


# daily SVN snapshot
SVNROOT=svn://mburo@bodo1.cs.ualberta.ca:/all/pubsoft
snapshot:
    rm -rf orts
    mkdir orts
    svn export $(SVNROOT)/orts/trunk orts/trunk
    tar cfz $(PROJ).tgz orts
    rm -rf orts
    rm -rf orts_data
    mkdir orts_data
    svn export $(SVNROOT)/orts_data/trunk orts_data/trunk
    tar cfz orts_data.tgz orts_data
    rm -rf orts_data

CC        := g++
CC_OPTS   := -pipe -felide-constructors -fstrict-aliasing -Wno-deprecated
# -fno-merge-constants

#WARN      := -Wall -W -Wundef 
WARN      := -Wall -W 
#-Wold-style-cast

#ifneq ("$(OSTYPE)", "$(OSTYPE_MINGW)") 
ifeq (,$(findstring $(OSTYPE_MINGW),$(OSTYPE)))
WARN += -Wundef 
endif 

OPT:=-O3

ifneq ("$(ORTS_MTUNE)","") 
  OPT:=$(OPT) -mtune=$(ORTS_MTUNE)
endif

OPT_FRAME := -fomit-frame-pointer 

# default 
AWK := gawk
EXE_SUFFIX :=

#ifeq ("$(OSTYPE)", "$(OSTYPE_MAC)") 
ifneq (,$(findstring $(OSTYPE_MAC),$(OSTYPE)))

################### Mac OS X 

OS_MAC := 1

MACROS    := -DGCC -DOS_MAC -DHAS_TYPEOF=1 -DTRANSFORM_MOUSE_Y=0 -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -DTARGET_API_MAC_CARBON=1
USR_FRAME := /Library/Frameworks
SYS_FRAME := /System/Library/Frameworks
INC_OPTS += -I/usr/local/Cellar/sdl/1.2.14/include/SDL \
            -I/usr/local/Cellar/sdl_net/1.2.7/include/SDL \
            -I/usr/local/Cellar/glew/1.7.0/include/GL \
            -I/usr/include/GL \
            -L$(USR_FRAME) -L$(SYS_FRAME) -L/usr/local/Cellar/sdl/1.2.14/lib -L/usr/local/Cellar/sdl_net/1.2.7/lib -L/usr/local/lib

SHARED_LIBS0 := -lc -lz  -lpthread \
               -lSDL \
               -lSDL_net \
               -lSDLmain \
               -framework Foundation \
               -framework AppKit

AWK := awk
#WARN += -Wno-long-double

ifeq ("$(CPU)", "G5")
OPT += -mcpu=970 -mpowerpc64
endif

else

################### MinGW

#ifeq ("$(OSTYPE)", "$(OSTYPE_MINGW)")
ifneq (,$(findstring $(OSTYPE_MINGW),$(OSTYPE)))

OS_LINUX := 1
MACROS   := -DOS_LINUX -DGCC -D_WIN32=1 -DTRANSFORM_MOUSE_Y=1 -DHAS_TYPEOF=1
MACROS   += -DGLUT_NO_LIB_PRAGMA -DGLUT_NO_WARNING_DISABLE
INC_OPTS += -I/mingw/include/GL -I/local/include 
SHARED_LIBS0  := -lm -lzlib1 -lmingw32 -lSDLmain -lSDL -lSDL_net -lpthreadGC2 -lstdc++

else

################### Linux | Cygwin

MACROS   := -DGCC -DTRANSFORM_MOUSE_Y=1 -DHAS_TYPEOF=1
INC_OPTS += -I$(HOME)/include -I$(HOME)/include/GL -I/usr/include -I/usr/include/SDL -I/usr/local/include/SDL -I$(HOME)/usr/local/include/GL
# -I/home/dsk06/cscrs/c399/c399-software/include

#ifeq ("$(OSTYPE)", "$(OSTYPE_LINUX)")
ifneq (,$(findstring $(OSTYPE_LINUX),$(OSTYPE)))

################### Linux 

OS_LINUX := 1
MACROS += -DOS_LINUX
#SHARED_LIBS0  += -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib -lm -lz -lSDLmain -lSDL -lSDL_net -lpthread -lGL -lGLU -lXi -lXmu -lglut -lGLEW $(MODEL_LIBS) -lstdc++
#SHARED_LIBS0  += -L$(HOME)/lib -lm -lz -lSDLmain -lSDL -lSDL_net -lpthread -lstdc++
SHARED_LIBS0  += -L$(HOME)/lib -lm -lz -lSDL -lSDL_net -lpthread -lstdc++
# -lefence

else 

#ifeq ("$(OSTYPE)", "$(OSTYPE_CYGWIN)")
ifneq (,$(findstring $(OSTYPE_CYGWIN),$(OSTYPE)))

################## Cygwin

OS_CYGWIN := 1
EXE_SUFFIX:=.exe
MACROS += -DOS_CYGWIN -DSTDC_HEADERS=1 -DGLUT_IS_PRESENT=1 
#-mno-cygwin
#INC_OPTS += -I/usr/include/mingw   -I/usr/include/mingw/GL -I/usr/include
#$(warning "INC_OPTS=" $(INC_OPTS))
# fixme: /lib/SDL_main.o -> -lSDLmain (didn't get SDL to compile on Cygwin)
# adjust paths if necessary
SHARED_LIBS0 := -lSDL -lSDL_net -lpthread  -lz -lstdc++ 

# GLEW not checked under cygwin!

else 

# unknown OSTYPE

$(error "!!!!! unknown OSTYPE=$(OSTYPE) !!!!")

endif
endif
endif
endif


# default mode; if ORTS_MODE set, use it
# otherwise use MODE if passed, or dbg otherwise

ifeq ("$(ORTS_MODE)", "") 
  MODE := dbg
else
  MODE := $(ORTS_MODE)
endif

OBJ_DIR := obj
CONFIG  := config

SHARED_PROF_LIBS := $(SHARED_LIBS0)
SHARED_BP_LIBS := ~/lib/bmon.o $(SHARED_LIBS0)

OBJ_OPT := $(OBJ_DIR)/opt
OBJ_DBG := $(OBJ_DIR)/dbg
OBJ_SDBG := $(OBJ_DIR)/stldbg
OBJ_PROF:= $(OBJ_DIR)/prof
OBJ_BP  := $(OBJ_DIR)/bp

OFLAGS  := $(WARN) $(OPT) $(OPT_FRAME) # !!! -g added for 2007 competition
DFLAGS  := $(WARN) -g -ggdb # -ftrapv
SDFLAGS := $(WARN) -g -ggdb -O -D_GLIBCXX_DEBUG # STL debug mode is SLOW!
PFLAGS  := $(WARN) $(OPT) -pg -O
BPFLAGS := $(WARN) -g -ggdb -O2

ifeq ("$(MODE)", "opt")
  FLAGS := $(OFLAGS) -DNDEBUG -Wuninitialized 
#-DSCRIPT_DEBUG
  STRIP := strip
  OBJ   := $(OBJ_OPT)
  SHARED_LIBS := $(SHARED_LIBS0)
else 
  ifeq ("$(MODE)", "gprof")
  FLAGS := $(PFLAGS) -DNDEBUG -Wuninitialized
  STRIP := echo
  OBJ   := $(OBJ_PROF)
  SHARED_LIBS := $(SHARED_PROF_LIBS)
else 
  ifeq ("$(MODE)", "bp")
  FLAGS := $(BPFLAGS) -DNDEBUG -Wuninitialized
  STRIP := echo
  OBJ   := $(OBJ_BP)
  SHARED_LIBS := $(SHARED_BP_LIBS)
else 
  ifeq ("$(MODE)", "dbg")
  FLAGS := $(DFLAGS) 
  STRIP := echo
  OBJ   := $(OBJ_DBG)
  SHARED_LIBS := $(SHARED_LIBS0)
else
  ifeq ("$(MODE)", "stldbg")
  FLAGS := $(SDFLAGS) 
  STRIP := echo
  OBJ   := $(OBJ_SDBG)
  SHARED_LIBS := $(SHARED_LIBS0)
else 

# unknown MODE

$(error "!!!!! unknown MODE=$(MODE) !!!!")

endif
endif
endif
endif
endif

CCOPTS  = $(CC_OPTS) $(MACROS) $(FLAGS) $(INC_OPTS) -DBOOST_STRICT_CONFIG
# -m32  for 32-bit applications

LD      := $(CC) $(CCOPTS) 
LDOPTS  := $(FLAGS)


# line prefix

ifeq ("$(MDBG)", "") 
VERBOSE=@
else
VERBOSE=
endif

# how to generate precompiled header file if GCC_PRECOMP=1
# otherwise, create dummy file

ALLH       := All.H
ALLGCH     := $(ALLH).gch
ALLGCHMODE := $(ALLGCH).$(MODE)

ifeq ("$(GCC_PRECOMP)", "1")

$(CONFIG)/$(ALLGCHMODE) : $(CONFIG)/$(ALLH)
    @ rm -rf  $(CONFIG)/$(ALLGCH)
    @ echo "compile gch file"
    $(VERBOSE) $(CC) $(CCOPTS) -c -o xxx1 $<
    @ mv xxx1 $@
    @ echo "link gch file"
    $(VERBOSE) cd $(CONFIG); ln -sf $(ALLGCHMODE) $(ALLGCH)
else

$(CONFIG)/$(ALLGCHMODE) : $(CONFIG)/$(ALLH)
    @ echo "DUMMY GCH FILE"
    $(VERBOSE) touch $@

endif


# link gch file to gchmode file
# depends on compiled header file

ifeq ("$(GCC_PRECOMP)", "1")

link_gch: 
    @ echo "link gch file"
    $(VERBOSE) cd $(CONFIG); ln -sf $(ALLGCHMODE) $(ALLGCH)

else

link_gch:
    @ echo "remove gch file"
    @ cd config ; rm -f $(ALLGCHMODE) $(ALLGCH)
endif

#===================================================================

# how to create dependency files
# add depfile (.d) as dependent file
# (***) (can't use $(DEP) in sed command because it contains / - so if DEP changes edit this line!
# also prepend object path for .o file
#

DEP_EXEC = $(VERBOSE) set -e; $(CC) -MM $(CCOPTS) $(INC_OPTS) $< | sed 's/$*\.o[ :]*/$(subst /,.,$(basename $<)).o dep\/$(@F) : /g' | $(AWK) '{ if (index($$1,".o") > 0) { print "$$(OBJ)/" $$0 ; } else { print $$0; } }' > $@; [ -s $@ ] || rm -f $@OB

# how to compile source files
#

COMP_EXEC = $(VERBOSE) $(CC) $(CCOPTS) -c -o $@ `pwd`/$<

#-------------------------------------

define create_sublib_rules2
$$(OBJ)/libs.$(subst /,.,$1).src.%.o : libs/$1/src/%.$2
    @ echo "comp($$(MODE)):" $$<
    $$(COMP_EXEC)

$$(DEP)/libs.$(subst /,.,$1).src.%.d : libs/$1/src/%.$2
    @ echo dep: $$<
    $$(DEP_EXEC)
endef

define create_sublib_rules
$(foreach ext,C c cpp m,$(eval $(call create_sublib_rules2,$1,$(ext))))
endef

#-------------------------------------

define create_subapp_rules2
$$(OBJ)/apps.$1.src.%.o : apps/$(subst .,/,$1)/src/%.$2
    @ echo "comp($$(MODE)):" $$<
    $$(COMP_EXEC)

$$(DEP)/apps.$1.src.%.d : apps/$(subst .,/,$1)/src/%.$2
    @ echo dep: $$<
    $$(DEP_EXEC)
endef

define create_subapp_rules
$(foreach ext,C c cpp,$(eval $(call create_subapp_rules2,$1,$(ext))))
endef

#===================================================================

# collect all source files, replace suffix by .o, and filter out *_main.o

# input:  FILES
# output: O_FILES

define create_O_FILES
#FILES     := $$(notdir $$(FILES))
C_FILES   := $$(filter %.C, $$(FILES))
c_FILES   := $$(filter %.c, $$(FILES))
cpp_FILES := $$(filter %.cpp, $$(FILES))

m_FILES   := 
ifeq ("$(OSTYPE)","$(OSTYPE_MAC)")
#ifneq (,$(findstring $(OSTYPE_MAC),$(OSTYPE)))
m_FILES   := $$(filter %.m, $$(FILES))
endif

O_FILES   := $$(C_FILES:.C=.o) $$(c_FILES:.c=.o) $$(cpp_FILES:.cpp=.o) $$(m_FILES:.m=.o)
O_FILES   := $$(subst /,.,$$(O_FILES))

O_FILES := $$(filter-out %_main.o, $$(O_FILES))
endef


# include all applications and dependencies (uses SHARED_LIBS for linking)

APP_SDIRS := $(subst .,/,$(APP_DIRS))

ifneq ("$(APP_DIRS)","")
#include $(patsubst %, apps/%/src/app.mk, $(APP_DIRS))
include $(patsubst %, apps/%/src/app.mk, $(APP_SDIRS))
endif

#$(warning lib_dirs="$(LIB_DIRS)")

vp := $(patsubst %, apps/%/src, $(APP_SDIRS)) \
      $(patsubst %, libs/%/src, $(APP_LIBS)) \
#     $(LIB_DIRS)

#vp := $(patsubst %, %/src, $(LIB_DIRS)) \
#      $(patsubst %, apps/%/src, $(APP_DIRS)) 

INC_OPTS += -Iconfig $(addprefix -I, $(vp))

# new
INC_OPTS += $(LIB_EXT_HD) $(APP_EXT_HD)

# $(warning INC_OPTS= $(INC_OPTS))

# where source files are searched

#$(warning vp="$(vp)")

vpath %.C   $(vp)
vpath %.c   $(vp)
vpath %.cpp $(vp)
vpath %.m   $(vp)

all_end: link_gch $(APP_DIRS)

cleanobj:
    rm -f $(OBJ_OPT)/*
    rm -f $(OBJ_DBG)/*
    rm -f $(OBJ_SDBG)/*
    rm -f $(OBJ_PROF)/*
    rm -f $(OBJ_BP)/*

clean:
    ( rm -f bin/*; exit 0)
    rm -f $(DEP)/*
    rm -f $(OBJ_OPT)/*
    rm -f $(OBJ_DBG)/*
    rm -f $(OBJ_SDBG)/*
    rm -f $(OBJ_PROF)/*
    rm -f $(OBJ_BP)/*
    rm -f $(CONFIG)/*.gch*
    rm -rf misc/doxygen/html
    find . -name "*.bprof" -exec rm -f '{}' \;
    find . -name ".ui" -exec rm -f '{}'/* \;
    find . -name ".moc" -exec rm -f '{}'/* \;

rmdeps:
    @ rm -f $(DEP)/

rpm:
    cd misc/pkgs/fc7; ./makerpm; cd ../../..

# create dependency, object directories
# doesn't touch links (pointing to fast local partitions)

init:
    @ echo "create directories"
    @ config/create_dir bin
    @ config/create_dir $(DEP)
    @ config/create_dir $(OBJ_DIR)
    @ config/create_dir $(OBJ_OPT)
    @ config/create_dir $(OBJ_DBG)
    @ config/create_dir $(OBJ_SDBG)
    @ config/create_dir $(OBJ_PROF)
    @ config/create_dir $(OBJ_BP)
#   @ ln -s ../../orts_data/trunk orts_data
    @ (cd libs/pathfinding/dcdt; ./makelinks; exit 0) > /dev/null 2>&1

然后我必须手动进行一些更改,以修复错误,如:

sr_bv_math.cpp:561: error: ‘isnan’ was not declared in this scope

编辑文件trunk/libs/pathfinding/dcdt/sr/src/sr_bv_math.cpp,在cmath包含之后,将isnan声明为 extern

#include <cmath>
extern "C" int isnan(double);

编译了二进制文件,但之后我还必须下载orts_data.tgz来运行应用程序。

嗯,第一次运行 ortsg 失败,报告:

纹理尺寸= 64X64

REMARK: can't open file:  testgame/ortsg/terrain.tga
REMARK: can't open file:  testgame/ortsg/noise.tga
Unable to load terrain noise texture testgame/ortsg/noise.tga
ERROR: /Users/karlphillip/installers/orts/orts/trunk/libs/gfxclient/src/GfxTerrain.C GfxTerrain() (line 213): failed to load noise image testgame/ortsg/noise.tga
REMARK: closing connection
REMARK: !!! already closed
REMARK: ~IO_Buffer called

即使文件在那里。所以我杀死了应用程序并再次尝试:

2011-11-27 01:51:02.947 ortsg[390:903] GLUT Warning: glutInit being called a second time.
seed=1322365862
ERROR: /Users/karlphillip/installers/orts/orts/trunk/libs/network/src/TCP_Client.C connect() (line 27): can't connect
REMARK: mixer not open
REMARK: closing connection
REMARK: !!! already closed

/Users/karlphillip/installers/orts/orts/trunk/libs/network/src/TCP_Client.C connect() (line 27): can't connect
Abort trap

您可能很熟悉错误的第一行。即使应用程序被杀了,某些东西似乎仍悬挂在某处,而我发现绕过错误的唯一方法并且干净运行应用程序正在重新启动计算机。

似乎此应用程序在Mac OS X上存在问题,需要立即修复。我建议您在Mac中安装Linux VM,甚至安装Windows VM,以便能够运行 ort ,如果您真的必须使用它。