000
22.08.2005, 21:59 Uhr
imhotep
followed the white rabbit
|
Hallo,
ich will ein kleines Testprogramm schreiben für glib und c++. Nur leider komm ich mit den gcc flags nicht ganz klar Er kompiliert zwar ohne Probleme, aber wenn ich mein Programm aufrufe bekomm ich immer die Fehlermeldung
Code: |
`_fabrik': ./nummer1.so: undefined symbol: _fabrik
|
prog.cpp
C++: |
#include <stdlib.h> #include <stdio.h> #include <glib.h> #include <gmodule.h> #include "basis.hpp"
Produkt * finder(){ fabrik_p fabrik; GModule *mod_handler; mod_handler = g_module_open("./nummer1.so", G_MODULE_BIND_LAZY); if (!mod_handler) { puts("Fehler beim laden"); printf("%s\n", g_module_error()); exit(0); } if (!g_module_symbol(mod_handler, "_fabrik", (gpointer*)&fabrik)) { puts("Fehler beim laden 2"); fprintf(stderr, "%s\n", g_module_error()); return NULL; } else { return fabrik(); } return NULL; }
int main(int argc, char** argv) { Produkt * prod; prod = finder(); if (prod == NULL) { exit(1); } printf("schnittstelle: %d\n", prod->schnittstelle()); exit(0); }
|
basis.hpp
C++: |
#ifndef BASIS_HPP #define BASIS_HPP
class Produkt { public: virtual int schnittstelle(void); };
typedef Produkt* (*fabrik_p) (void);
#endif
|
nummer1.cpp
C++: |
#include "basis.hpp" //#include <gmodule.h>
class nummer1 : public Produkt { public: int schnittstelle(void); };
extern "C" { Produkt* _fabrik() { return new nummer1(); } }
|
Compilier mit den zwei Befehlen
BASH: |
$ g++ `pkg-config --cflags --libs glib-2.0 gmodule-2.0` -o prog prog.cpp $ gcc -shared -fPIC -Wl,-soname -g -o nummer1.so nummer1.cpp
|
Hat einer ne Ahnung was ich falschmache bzw. vergesse.
Danke. |