Using static d libs in C++

Chrono chrono at mta-international.net
Fri Sep 28 16:05:22 PDT 2007


Hello!

I'm new to d. And I'd like to use some d functions in my c++ projects by
building them static and linking them.

my platform: dmd and g++ on linux.

####################### BEGIN sub.d: #######################
import std.stdio;

extern (C) int testproc(int somevar)
{
        return (somevar + 1);
}
#######################  END  sub.d: #######################

##################### BEGIN main.cpp : #####################
#include <iostream>

extern "C" int testproc(int somevar);

int main(void)
{
  int myvar = 5;
  printf("myvar: %d\n", testproc(myvar));
  return 0;
}
#####################  END  main.cpp : #####################


Compiling them wihout linking.
./dmd -c sub.d
g++ -c main.cpp

everything works fine, I get main.o and sub.o but then

gcc main.o sub.o -o myprogram -m32 -lstdc++ -Xlinker -L./dmd/bin/../lib
-lphobos -lpthread -lm



/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/libphobos.a(deh2.o): In
function `_D4deh213__eh_finddataFPvZPS4deh213DHandlerTable':
internal/deh2.d:(.gnu.linkonce.t_D4deh213__eh_finddataFPvZPS4deh213DHandlerTable+0x9):
undefined reference to `_deh_beg'
internal/deh2.d:(.gnu.linkonce.t_D4deh213__eh_finddataFPvZPS4deh213DHandlerTable+0xe):
undefined reference to `_deh_beg'
internal/deh2.d:(.gnu.linkonce.t_D4deh213__eh_finddataFPvZPS4deh213DHandlerTable+0x14):
undefined reference to `_deh_end'
internal/deh2.d:(.gnu.linkonce.t_D4deh213__eh_finddataFPvZPS4deh213DHandlerTable+0x37):
undefined reference to `_deh_end'
collect2: ld returned 1 exit status
--- errorlevel 1




any ideas?


More information about the Digitalmars-d-learn mailing list