dlopen ? is it possible to use with stdc++

Levente Farkas lfarkas@mindmaker.hu
Tue Oct 17 07:48:00 GMT 2000


hi,
I'm try to use a simple shared library:
---------------------------
#include <iostream>

void test1()
{
  cout << "test1";
}
---------------------------
compile it with :
g++ -c -fPIC -fhonor-std test.cpp -o test.o
create a shared lib with:
export LD_LIBRARY_PATH=/home/lfarkas
g++ test1.o -L/home/lfarkas/ -shared -Wl,-soname,libtest.so.1 -o
/home/lfarkas/libtest.so.1.0
than compile the following test:
---------------------------
#include <stdio.h>
#include <dlfcn.h>

int main(int /*argc*/, char** /*args*/)
{
  void* handle;
  handle = dlopen("libtest.so", RTLD_LAZY);
  if (!handle)
  {
    fputs(dlerror(), stderr);
    return 1;
  }
  fputs("betoltve", stdout);
  typedef void (*type)();
  type func = (type)dlsym(handle, "test1");
  (*func)();
  dlclose(handle);
  return 0;
}
---------------------------
g++ -c -fPIC -fhonor-std test.cpp -o test.o
g++ -o a.out  test.o -L/home/lfarkas -ldl
and then try to run
./a.out
but the result always (ie on rh 6.2 with my gcc on rh 7.0 with default gcc)
Segmentation fault (core dumped)
not even print any error messages by the dlerror, just simple core dump.
the strange thing if I change the test lib not to use the stdc++ library
(replace iostream/cout with stdio/printf and g++ with gcc) everything
works fine. another strange thing that I can use this test lib if I link 
it together with the executable (-ltest) and don't try to load it on
runtime.
anybody has any tip? any tipp would be very useful.
thank you for your help in advance.
yours.

 -- Levente                        http://petition.eurolinux.org/index_html
 "The only thing worse than not knowing the truth is
  ruining the bliss of ignorance."


More information about the Libstdc++ mailing list