[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
undefined reference when linking a dll
From: |
Sam Steingold |
Subject: |
undefined reference when linking a dll |
Date: |
Wed, 27 Jul 2011 15:40:11 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Hi,
I get this error on windows:
i686-w64-mingw32-gcc -shared rawsock.o -Lbase lisp.def -Wl,--export-all-symbols
-W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type
-Wmissing-declarations -Wno-sign-compare -Wno-format-nonliteral
-falign-functions=4 -D_WIN32 -g -O0 -DDEBUG_OS_ERROR -DDEBUG_SPVW
-DDEBUG_BYTECODE -DSAFETY=3 -DENABLE_UNICODE -DNO_TERMCAP_NCURSES -DDYNAMIC_FFI
-DDYNAMIC_MODULES -DNO_GETTEXT -I. -DDLL_EXPORT -DPIC -o
C:/sds/src/clisp/current/build-mingw-g/dynmod/lib-rawsock.dll
-Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker
C:/sds/src/clisp/current/build-mingw-g/dynmod/lib-rawsock.dll
Creating library file:
C:/sds/src/clisp/current/build-mingw-g/dynmod/lib-rawsock.dll
rawsock.o: In function `readv':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:148: undefined
reference to `_rpl_recv'
rawsock.o: In function `writev':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:156: undefined
reference to `_rpl_send'
rawsock.o: In function `C_subr_rawsock_htonl':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:319: undefined
reference to address@hidden'
rawsock.o: In function `C_subr_rawsock_ntohl':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:335: undefined
reference to address@hidden'
rawsock.o: In function `C_subr_rawsock_htons':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:353: undefined
reference to address@hidden'
rawsock.o: In function `C_subr_rawsock_ntohs':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:368: undefined
reference to address@hidden'
rawsock.o: In function `C_subr_rawsock_socket':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:662: undefined
reference to `_rpl_socket'
rawsock.o: In function `C_subr_rawsock_socketpair':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:681: undefined
reference to `_rpl_socket'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:682: undefined
reference to `_rpl_socket'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:683: undefined
reference to `_rpl_bind'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:685: undefined
reference to `_rpl_listen'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:687: undefined
reference to `_rpl_getsockname'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:688: undefined
reference to `_rpl_connect'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:689: undefined
reference to `_rpl_accept'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:691: undefined
reference to `_rpl_close'
rawsock.o: In function `C_subr_rawsock_accept':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:742: undefined
reference to `_rpl_accept'
rawsock.o: In function `C_subr_rawsock_bind':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:751: undefined
reference to `_rpl_bind'
rawsock.o: In function `C_subr_rawsock_connect':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:760: undefined
reference to `_rpl_connect'
rawsock.o: In function `C_subr_rawsock_getpeername':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:769: undefined
reference to `_rpl_getpeername'
rawsock.o: In function `C_subr_rawsock_getsockname':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:778: undefined
reference to `_rpl_getsockname'
rawsock.o: In function `C_subr_rawsock_sock_listen':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:787: undefined
reference to `_rpl_listen'
rawsock.o: In function `C_subr_rawsock_recv':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:943: undefined
reference to `_rpl_recv'
rawsock.o: In function `C_subr_rawsock_recvfrom':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:959: undefined
reference to `_rpl_recvfrom'
rawsock.o: In function `C_subr_rawsock_sock_read':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1048: undefined
reference to `_rpl_recv'
rawsock.o: In function `C_subr_rawsock_send':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1063: undefined
reference to `_rpl_send'
rawsock.o: In function `C_subr_rawsock_sendto':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1100: undefined
reference to `_rpl_sendto'
rawsock.o: In function `C_subr_rawsock_sock_write':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1122: undefined
reference to `_rpl_send'
rawsock.o: In function `C_subr_rawsock_sock_close':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1130: undefined
reference to `_rpl_close'
rawsock.o: In function `get_sock_opt':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1241: undefined
reference to `_rpl_getsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1260: undefined
reference to `_rpl_getsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1263: undefined
reference to `_rpl_getsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1267: undefined
reference to `_rpl_getsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1275: undefined
reference to `_rpl_getsockopt'
rawsock.o: In function `set_sock_opt':
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1356: undefined
reference to `_rpl_setsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1375: undefined
reference to `_rpl_setsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1378: undefined
reference to `_rpl_setsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1382: undefined
reference to `_rpl_setsockopt'
/cygdrive/c/sds/src/clisp/current/modules/rawsock/rawsock.c:1393: undefined
reference to `_rpl_setsockopt'
collect2: ld returned 1 exit status
./clisp-link: failed in /cygdrive/c/sds/src/clisp/current/build-mingw-g/full
make: *** [full] Error 1
$ nm libgnu.a | grep rpl_setsockopt
000000c8 T _rpl_setsockopt
$ nm lisp.exe | grep rpl_setsockopt
0055dfbc T _rpl_setsockopt
$ grep rpl_setsockopt lisp.def
lisp.exe._rpl_setsockopt
this is despite "lisp.exe._rpl_setsockopt" et al being present in
lisp.def IMPORTS section.
note that all the other (non-gnulib) symbols in lisp.exe mentioned in
rawsock.o link just fine, e.g.:
asciz_to_string
$ nm rawsock/rawsock.o | grep asciz_to_string
U __imp__asciz_to_string
$ nm lisp.exe | grep asciz_to_string
0044731c T _asciz_to_string
$ grep asciz_to_string lisp.def
lisp.exe.asciz_to_string
and there are no errors about asciz_to_string.
this is because asciz_to_string is declared with __declspec(dllexport)
where it is defined.
there seems to be no way to add such a declaration to the rpl_setsockopt
et al.
if, instead, I add libgnu.a to the command line, I get
libgnu.a(sendto.o): In function `rpl_sendto':
/cygdrive/c/sds/src/clisp/current/build-mingw-g/gllib/../../src/gllib/sendto.c:36:
undefined reference to address@hidden'
so, how do I create a dll which refers to the gnulib functionality?
--
Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X
11.0.60900031
http://www.PetitionOnline.com/tap12009/ http://iris.org.il http://dhimmi.com
http://www.memritv.org http://openvotingconsortium.org http://camera.org
Two wrongs don't make a right, but three rights make a left.
- undefined reference when linking a dll,
Sam Steingold <=