• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Compiling weapons.cpp:(.text+0x1730): undefined reference to `Array<ItemType*>::getElement [..]

ultrkomm

New Member
Joined
Nov 6, 2011
Messages
76
Reaction score
3
Hi!

I'm trying to compile a Mystic Spirit distribution under Debian stable, but I get this error from the linker:
Code:
obj/weapons.o: In function `Weapons::loadDefaults()':
weapons.cpp:(.text+0x1730): undefined reference to `Array<ItemType*>::getElement(unsigned int) const'
collect2: ld returned 1 exit status
make: *** [forgottenserver] Error 1

Here is my makefile:
Code:
# Makefile for Linux (Ubuntu, Debian), Windows (mingw, probably supports MSVC too)

TFS = forgottenserver



INCLUDEDIRS = -I"." -I"/usr/include/libxml2" -I"/usr/include/lua5.1" -I"/usr/include/mysql"



LIBDIRS =



FLAGS = -D_THREAD_SAFE -D_REENTRANT -D__NO_HOMEDIR_CONF__ -D__ENABLE_SERVER_DIAGNOSTIC__



#CXXFLAGS = $(INCLUDEDIRS) $(FLAGS) -Werror -Wall -O2

CXXFLAGS = $(INCLUDEDIRS) $(FLAGS) -Wall -O2

CXX = g++



#Those are common libraries

LIBS = -lxml2 -lpthread -llua5.1 -lgmp



#For windows:

#	mingw32-make

#For Linux:

#	make



ifndef MYSQL

MYSQL = 0

endif

ifndef SQLITE

SQLITE = 1

endif



ifeq ($(MYSQL),1)

	ifdef WIN32

		LIBS += -lmysql

	else

		LIBS += -lmysqlclient

	endif

	FLAGS += -D__USE_MYSQL__

	MYSQL_SOURCE = databasemysql.cpp

endif



ifeq ($(SQLITE),1)

	LIBS += -lsqlite3

	FLAGS += -D__USE_SQLITE__

	SQLITE_SOURCE = databasesqlite.cpp

endif



#mingw32-make WIN32=1 LATEST_MINGW=1



ifdef WIN32

	ifdef LATEST_MINGW

		#Causes notices when compiling with latest MinGW without these flags.

		FLAGS += -enable-stdcall-fixup -enable-auto-import -enable-runtime-pseudo-reloc

		LIBS += -lboost_system-mgw45-1_45 -lboost_thread-mgw45-mt-1_45 -lboost_regex-mgw45-1_45

	else

		LIBS += -lboost_system -lboost_thread -lboost_regex

	endif

	LIBS += -lws2_32 -lwsock32

	FLAGS += -mwindows

else

	LIBS += -lboost_thread -lboost_system -lboost_regex -lpthread -ldl

endif



#mingw32-make DEBUG=1

#make DEBUG=1



ifdef DEBUG

	CXXFLAGS += -g

	#TODO: add all flags

	FLAGS += -D__DEBUG__ -D__DEBUG_PLAYERS__ 

endif



LDFLAGS = $(LIBDIRS) $(LIBS)



ifdef WIN32

	DEL = del

endif



# Removed: admin.cpp databasemanager.cpp ioban.cpp quests.cpp
CXXSOURCES = $(MYSQL_SOURCE) $(SQLITE_SOURCE)					\
account.cpp         depot.cpp           map.cpp             scheduler.cpp	\
actions.cpp         exception.cpp       md5.cpp             scriptmanager.cpp	\
allocator.cpp       fileloader.cpp      monster.cpp         server.cpp		\
ban.cpp             game.cpp            monsters.cpp        sha1.cpp		\
baseevents.cpp      gameservers.cpp     movement.cpp        spawn.cpp		\
beds.cpp            globalevent.cpp     networkmessage.cpp  spells.cpp		\
chat.cpp            gui.cpp             npc.cpp             status.cpp		\
combat.cpp          house.cpp           otserv.cpp          talkaction.cpp	\
commands.cpp        housetile.cpp       outfit.cpp          tasks.cpp		\
condition.cpp       inputbox.cpp        outputmessage.cpp   teleport.cpp	\
configmanager.cpp   ioguild.cpp         party.cpp           textlogger.cpp	\
connection.cpp      iologindata.cpp     playerbox.cpp       thing.cpp		\
container.cpp       iomap.cpp           player.cpp          tile.cpp		\
creature.cpp        iomapserialize.cpp  position.cpp        tools.cpp		\
creatureevent.cpp   item.cpp            protocol76.cpp      trashholder.cpp	\
cylinder.cpp        items.cpp           protocol.cpp        waitlist.cpp	\
database.cpp        logger.cpp          protocollogin.cpp   weapons.cpp		\
luascript.cpp       raids.cpp           vocation.cpp        mailbox.cpp		\
rsa.cpp



OBJDIR = obj

CXXOBJECTS = $(CXXSOURCES:%.cpp=$(OBJDIR)/%.o)



all: $(TFS)



clean:

ifdef WIN32

	-$(DEL) $(CXXOBJECTS) $(TFS)

else

	$(RM) $(CXXOBJECTS) $(TFS)

endif



$(TFS): $(CXXOBJECTS)

	$(CXX) $(CXXFLAGS) -o $@ $(CXXOBJECTS) $(LDFLAGS)



$(OBJDIR)/%.o: %.cpp

	$(CXX) -c $(CXXFLAGS) -o $@ $<

How can I fix this linker error?
 
Last edited:
Back
Top