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