mingw/dll-export
-
wusste nicht genau, wohin mit der frage - und zwar - folgendes:
Ich programmiere grade eine dll, die auf directx-funktionen zugreift. die dll selbst hat nur 2 zu exportierende funktionen. wenn ich nun aber versuche, diese zu kompilieren bekomme ich tonnenweise exportfehler:Cannot export ??_C@_00CNPNBAHC@?$AA@: symbol not found Cannot export ??_C@_01CLKCMJKC@?5?$AA@: symbol not found Cannot export ??_C@_01EEMJAFIK@?6?$AA@: symbol not found Cannot export ??_C@_03EKLFPLOI@n?1a?$AA@: symbol not found Cannot export ??_C@_03JALODAI@?$CFld?$AA@: symbol not found Cannot export ??_C@_04LNELPODO@S_OK?$AA@: symbol not found Cannot export ??_C@_05BBFNOOIG@hr?$DN?$CFs?$AA@: symbol not found Cannot export ??_C@_06FOOEOEIK@E_FAIL?$AA@: symbol not found Cannot export ??_C@_07BKENBJEJ@S_FALSE?$AA@: symbol not found ...usw...ich hab mir mal eine def datei erstellen lassen - da waren auf einmal die ganzen exporte definiert. die will ich doch überhauptnicht haben!
kann man dem irgendwie sagen, dass er sich beim export auf die zwei funktionen die ich wirklich exportieren will beschränken soll? mit einer def datei oder sowas? Ich nutze Codeblocks als IDE und es wäre schön wenn es einen weg gebe auch in codeblocks zu bleiben ohne die commandozeile bemühen zu müssen, denn es wird häufig neu kompiliert...
-
gelöst
-
HEy cool...
wie Progst du diese DLL mit mingw?
Ich würde gerne einige Funktionen in DLLs auslagern und aus meinem PRogramm nurnoch auf die DLLs zugreifen und die Funktionen laden und soo, weißt du wie man sowas macht?Das würde ein "Update" des Programmes erleichtern.
-
#ifdef BUILD_DLL #define EXPORT __declspec(dllexport) #else #define EXPORT __declspec(dllimport) #endif extern "C" { EXPORT funktionsname(parameter); }mingw32-g++.exe -DBUILD_DLL -o dllname.o dllname.cpp
mingw32-g++.exe -shared --dll -o dllname.dll dllname.o
-
Oh, hatte ich vergessen zu schreiben das ich schon die Lösung gefunden habe...
Danke aber trotzdem. Man sucht sich ja fast tot, weil man dnekt es müssen komische parameter in die gcc/g++ Aufrufzeile xD
-
wie muss das hier sein?
#include <boost/python.hpp> #include <string> using namespace boost::python; using namespace std; struct World { void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; BOOST_PYTHON_MODULE(hello) { class_<World>("World") .def("greet", &World::greet) .def("set", &World::set) ; }