Hier ein kleines Gnu-Make
sollte unter CDT laufen, habe ich aus dem Buch "C++ Kochbuch" aus dem O#Reilley Verlag. Funktioniert bei mir einwandfrei. Achte auf das letzte Hpp. Hier müssen die Exports definiert werden:
CLEANEXT=o so bak
OUTPUTFILE=libgeorgeringo.dll
INSTALLDIR=../binaries
SOURCES=george.cpp ringo.cpp georgeringo.cpp
.PHONY: all
all: $(OUTPUTFILE)
$(OUTPUTFILE): $(subst .cpp,.o,$(SOURCES))
$(CXX) -shared -fPIC $(LDFLAGS) -o $@ $^
.PHONY: install
install:
mkdir -p $(INSTALLDIR)
cp -p $(OUTPUTFILE) $(INSTALLDIR)
.PHONY: clean
clean:
for file in $(CLEANEXT); do rm -f *.$$file; done
george.o: george.hpp
ringo.o: ringo.hpp
georgeringo.o: georgeringo.cpp
g++ -c -o $@ $^
------------------------------------------------------
Hier der SourceCode:
File Ringo.cpp
#include <iostream>
#include "ringo.hpp"
void ringo(){
std::cout << " und Ringo.\n" ;
}
_______________ Ringo.hpp
#ifndef _RINGO_HPP_
#define _RINGO_HPP_
void ringo();
#endif
______________________ George.cpp
#include <iostream>
#include "george.hpp"
void george(){
std::cout << "George " ;
}
________________________ george.hpp
#ifndef _GEORGE_HPP_
#define _GEORGE_HPP_
void george();
#endif
__________________ georgeringo.cpp
#include <iostream>
#include "george.hpp"
#include "ringo.hpp"
void georgeringo(){
george();
ringo();
}
________________ georgeringo.hpp
#ifndef _GEORGERINGO_HPP_
#define _GEORGERINGO_HPP_
#if defined(_WIN32) && ! defined(__GNUC__)
#ifdef GEORGERINGO_DLL
#define GEORGERINGO_DECL __declspec(dllexport)
#else
#define GEORGERINGO_DECL __declspec(dllimport)
#endif
#endif
#ifndef GEORGERINGO_DECL
#define GEORGERINGO_DECL
#endif
#ifdef _MWERKS_
#pragma export on
#endif
GEORGERINGO_DECL void georgeringo();
#ifdef _MWERKS_
#pragma export off
#endif
#endif
_____________________________