I’m compiling a very short c++ file using makefile.The c++ file using a external libary named ClanLib, but that’s not the point, because I can use “make” command to compile it in the shell, so the c++ file and the makefile are OK.
#include <ClanLib/core.h>
#include <ClanLib/application.h>
class ConsoleProgram {
public:
static int main(const std::vector<CL_String> &args);
};
CL_ClanApplication app(&ConsoleProgram::main);
int ConsoleProgram::main(const std::vector<CL_String> &args) {
CL_SetupCore setup_core;
CL_ConsoleWindow console_window("Console");
CL_Console::write_line("Hello World!");
CL_Console::wait_for_key();
return 0;
}
BIN = main
OBJF = main.o
LIBS = clanCore clanDisplay clanGL clanGL1 clanApp clanSWRender
VERSION = 2.3
PACKAGES = $(patsubst %, %-$(VERSION), $(LIBS))
INCLUDE += -I/usr/include/ClanLib-2.3/
CXXFLAGS += $(INCLUDE) `pkg-config --cflags $(PACKAGES)` -pthread
all: $(BIN)
$(BIN): $(OBJF)
$(CXX) $(CXXFLAGS) $(OBJF) -o $(BIN) `pkg-config --libs $(PACKAGES)`
clean:
find . -name '*.o' -type f -print -exec rm -rf {} \;
rm -f $(BIN)
%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
%.o : %.hpp
$(CXX) $(CXXFLAGS) -c $< -o $@
But I get lots of errors while compiling it in the eclipse, I’ve been googling from morning but without any clues.
/usr/include/ClanLib-2.3/ClanLib/Core/Crypto/aes128_decrypt.h:116:2: error: ‘shared_ptr’ in namespace ‘std’ does not name a type
In file included from /usr/include/ClanLib-2.3/ClanLib/core.h:217:0,
from main.cpp:1:
/usr/include/ClanLib-2.3/ClanLib/Core/Crypto/aes192_encrypt.h:114:2: error: ‘shared_ptr’ in namespace ‘std’ does not name a type
In file included from /usr/include/ClanLib-2.3/ClanLib/core.h:218:0,
from main.cpp:1:
/usr/include/ClanLib-2.3/ClanLib/Core/Crypto/aes192_decrypt.h:116:2: error: ‘shared_ptr’ in namespace ‘std’ does not name a type
In file included from /usr/include/ClanLib-2.3/ClanLib/core.h:219:0,
from main.cpp:1:
/usr/include/ClanLib-2.3/ClanLib/Core/Crypto/aes256_encrypt.h:114:2: error: ‘shared_ptr’ in namespace ‘std’ does not name a type
In file included from /usr/include/ClanLib-2.3/ClanLib/core.h:220:0,
from main.cpp:1:
/usr/include/ClanLib-2.3/ClanLib/Core/Crypto/aes256_decrypt.h:116:2: error: ‘shared_ptr’ in namespace ‘std’ does not name a type
make: *** [main.o] Error 1
Any clue or advise will be very appreciated.
I’m useing Fedora 17 x86_64, eclipse indigo.
You need to add
std=c++0xto the g++ compiler flags to getstd::shared_ptr.