Hello to all. I'm using ubuntu 11.04 (32-bits) to cross-compile some
static libraries to windows.

I'm using mingw-w32 1.0, downloded from mingw-64 sf page.

In some libraries I'm compiling, I have an error in the link time,
when in the line of the source when e.g a function called myFunction()
is called, in linking time the linker tries to call
__impl__myFunction(), which is undefined.

To reproduce this error, download libconfig-1.4.8.tar.gz from
http://www.hyperrealm.com/libconfig/

The configure parameters I used were:
--prefix=$BUILD_PATH --disable-shared --enable-static --host=i686-w64-mingw32

and the make output:

$ make
make  all-recursive
make[1]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8'
Making all in lib
make[2]: Entrando no diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/lib'
make  all-am
make[3]: Entrando no diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/lib'
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIG_EXPORTS   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-libconfig.lo -MD -MP -MF .deps/libconfig_la-libconfig.Tpo
-c -o libconfig_la-libconfig.lo `test -f 'libconfig.c' || echo
'./'`libconfig.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-libconfig.lo -MD -MP -MF .deps/libconfig_la-libconfig.Tpo
-c libconfig.c -o libconfig_la-libconfig.o
libconfig.c: In function '__config_locale_override':
libconfig.c:100:2: warning: #warning "No way to modify calling thread's locale!"
libconfig.c: In function '__config_locale_restore':
libconfig.c:121:2: warning: #warning "No way to modify calling thread's locale!"
mv -f .deps/libconfig_la-libconfig.Tpo .deps/libconfig_la-libconfig.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIG_EXPORTS   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-scanner.lo -MD -MP -MF .deps/libconfig_la-scanner.Tpo -c
-o libconfig_la-scanner.lo `test -f 'scanner.c' || echo './'`scanner.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-scanner.lo -MD -MP -MF .deps/libconfig_la-scanner.Tpo -c
scanner.c -o libconfig_la-scanner.o
mv -f .deps/libconfig_la-scanner.Tpo .deps/libconfig_la-scanner.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIG_EXPORTS   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-grammar.lo -MD -MP -MF .deps/libconfig_la-grammar.Tpo -c
-o libconfig_la-grammar.lo `test -f 'grammar.c' || echo './'`grammar.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-grammar.lo -MD -MP -MF .deps/libconfig_la-grammar.Tpo -c
grammar.c -o libconfig_la-grammar.o
mv -f .deps/libconfig_la-grammar.Tpo .deps/libconfig_la-grammar.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIG_EXPORTS   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-scanctx.lo -MD -MP -MF .deps/libconfig_la-scanctx.Tpo -c
-o libconfig_la-scanctx.lo `test -f 'scanctx.c' || echo './'`scanctx.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-scanctx.lo -MD -MP -MF .deps/libconfig_la-scanctx.Tpo -c
scanctx.c -o libconfig_la-scanctx.o
mv -f .deps/libconfig_la-scanctx.Tpo .deps/libconfig_la-scanctx.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIG_EXPORTS   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-strbuf.lo -MD -MP -MF .deps/libconfig_la-strbuf.Tpo -c -o
libconfig_la-strbuf.lo `test -f 'strbuf.c' || echo './'`strbuf.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_la-strbuf.lo -MD -MP -MF .deps/libconfig_la-strbuf.Tpo -c
strbuf.c -o libconfig_la-strbuf.o
mv -f .deps/libconfig_la-strbuf.Tpo .deps/libconfig_la-strbuf.Plo
/bin/bash ../libtool --tag=CC   --mode=link i686-w64-mingw32-gcc
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -version-info
10:2:1 -no-undefined -L/home/devstar22/projects/build_windows/lib -o
libconfig.la -rpath /home/devstar22/projects/build_windows/lib
libconfig_la-libconfig.lo libconfig_la-scanner.lo
libconfig_la-grammar.lo libconfig_la-scanctx.lo libconfig_la-strbuf.lo
libtool: link: i686-w64-mingw32-ar cru .libs/libconfig.a
libconfig_la-libconfig.o libconfig_la-scanner.o libconfig_la-grammar.o
libconfig_la-scanctx.o libconfig_la-strbuf.o
libtool: link: i686-w64-mingw32-ranlib .libs/libconfig.a
libtool: link: ( cd ".libs" && rm -f "libconfig.la" && ln -s
"../libconfig.la" "libconfig.la" )
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-libconfig.lo -MD -MP -MF
.deps/libconfig___la-libconfig.Tpo -c -o libconfig___la-libconfig.lo
`test -f 'libconfig.c' || echo './'`libconfig.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-libconfig.lo -MD -MP -MF
.deps/libconfig___la-libconfig.Tpo -c libconfig.c -o
libconfig___la-libconfig.o
libconfig.c: In function '__config_locale_override':
libconfig.c:100:2: warning: #warning "No way to modify calling thread's locale!"
libconfig.c: In function '__config_locale_restore':
libconfig.c:121:2: warning: #warning "No way to modify calling thread's locale!"
mv -f .deps/libconfig___la-libconfig.Tpo .deps/libconfig___la-libconfig.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-scanner.lo -MD -MP -MF .deps/libconfig___la-scanner.Tpo
-c -o libconfig___la-scanner.lo `test -f 'scanner.c' || echo
'./'`scanner.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-scanner.lo -MD -MP -MF .deps/libconfig___la-scanner.Tpo
-c scanner.c -o libconfig___la-scanner.o
mv -f .deps/libconfig___la-scanner.Tpo .deps/libconfig___la-scanner.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-grammar.lo -MD -MP -MF .deps/libconfig___la-grammar.Tpo
-c -o libconfig___la-grammar.lo `test -f 'grammar.c' || echo
'./'`grammar.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-grammar.lo -MD -MP -MF .deps/libconfig___la-grammar.Tpo
-c grammar.c -o libconfig___la-grammar.o
mv -f .deps/libconfig___la-grammar.Tpo .deps/libconfig___la-grammar.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-scanctx.lo -MD -MP -MF .deps/libconfig___la-scanctx.Tpo
-c -o libconfig___la-scanctx.lo `test -f 'scanctx.c' || echo
'./'`scanctx.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-scanctx.lo -MD -MP -MF .deps/libconfig___la-scanctx.Tpo
-c scanctx.c -o libconfig___la-scanctx.o
mv -f .deps/libconfig___la-scanctx.Tpo .deps/libconfig___la-scanctx.Plo
/bin/bash ../libtool  --tag=CC   --mode=compile i686-w64-mingw32-gcc
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-strbuf.lo -MD -MP -MF .deps/libconfig___la-strbuf.Tpo
-c -o libconfig___la-strbuf.lo `test -f 'strbuf.c' || echo
'./'`strbuf.c
libtool: compile:  i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-strbuf.lo -MD -MP -MF .deps/libconfig___la-strbuf.Tpo
-c strbuf.c -o libconfig___la-strbuf.o
mv -f .deps/libconfig___la-strbuf.Tpo .deps/libconfig___la-strbuf.Plo
/bin/bash ../libtool  --tag=CXX   --mode=compile i686-w64-mingw32-g++
-DHAVE_CONFIG_H -I. -I..  -DPARSER_PREFIX=\"libconfig_yy\"
-D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC   -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-libconfigcpp.lo -MD -MP -MF
.deps/libconfig___la-libconfigcpp.Tpo -c -o
libconfig___la-libconfigcpp.lo `test -f 'libconfigcpp.c++' || echo
'./'`libconfigcpp.c++
libtool: compile:  i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I..
-DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS
-DLIBCONFIG_STATIC -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig___la-libconfigcpp.lo -MD -MP -MF
.deps/libconfig___la-libconfigcpp.Tpo -c libconfigcpp.c++ -o
libconfig___la-libconfigcpp.o
mv -f .deps/libconfig___la-libconfigcpp.Tpo
.deps/libconfig___la-libconfigcpp.Plo
/bin/bash ../libtool --tag=CXX   --mode=link i686-w64-mingw32-g++
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -version-info
10:2:1 -no-undefined -L/home/devstar22/projects/build_windows/lib -o
libconfig++.la -rpath /home/devstar22/projects/build_windows/lib
libconfig___la-libconfig.lo libconfig___la-scanner.lo
libconfig___la-grammar.lo libconfig___la-scanctx.lo
libconfig___la-strbuf.lo libconfig___la-libconfigcpp.lo
libtool: link: i686-w64-mingw32-ar cru .libs/libconfig++.a
libconfig___la-libconfig.o libconfig___la-scanner.o
libconfig___la-grammar.o libconfig___la-scanctx.o
libconfig___la-strbuf.o libconfig___la-libconfigcpp.o
libtool: link: i686-w64-mingw32-ranlib .libs/libconfig++.a
libtool: link: ( cd ".libs" && rm -f "libconfig++.la" && ln -s
"../libconfig++.la" "libconfig++.la" )
make[3]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib'
make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib'
Making all in doc
make[2]: Entrando no diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/doc'
make[2]: Nada a ser feito para `all'.
make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/doc'
Making all in tinytest
make[2]: Entrando no diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest'
i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..     -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
tinytest.o -MD -MP -MF .deps/tinytest.Tpo -c -o tinytest.o tinytest.c
mv -f .deps/tinytest.Tpo .deps/tinytest.Po
rm -f libtinytest.a
i686-w64-mingw32-ar cru libtinytest.a tinytest.o
i686-w64-mingw32-ranlib libtinytest.a
make[2]: Saindo do diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest'
Making all in tests
make[2]: Entrando no diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/tests'
i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I..  -I../tinytest -I../lib
 -ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -MT
libconfig_tests-tests.o -MD -MP -MF .deps/libconfig_tests-tests.Tpo -c
-o libconfig_tests-tests.o `test -f 'tests.c' || echo './'`tests.c
mv -f .deps/libconfig_tests-tests.Tpo .deps/libconfig_tests-tests.Po
/bin/bash ../libtool --tag=CC   --mode=link i686-w64-mingw32-gcc
-ggdb -I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/
-L/home/devstar22/projects/build_windows/lib -o libconfig_tests.exe
libconfig_tests-tests.o -L../tinytest -ltinytest -L../lib/.libs
-lconfig
libtool: link: i686-w64-mingw32-gcc -ggdb
-I/home/devstar22/projects/build_windows/include
-I/home/devstar22/projects/build_windows/include/evil-1/ -o
libconfig_tests.exe libconfig_tests-tests.o
-L/home/devstar22/projects/build_windows/lib
-L/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest -ltinytest
-L/home/devstar22/projects/3rd/libconfig-1.4.8/lib/.libs
/home/devstar22/projects/3rd/libconfig-1.4.8/lib/.libs/libconfig.a
libconfig_tests-tests.o: In function `parse_and_compare':
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:37:
undefined reference to `__imp__config_init'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:38:
undefined reference to `__imp__config_set_include_dir'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:40:
undefined reference to `__imp__config_read_file'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:49:
undefined reference to `__imp__config_write_file'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:54:
undefined reference to `__imp__config_destroy'
libconfig_tests-tests.o: In function `parse_file_and_compare_error':
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:64:
undefined reference to `__imp__config_init'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:65:
undefined reference to `__imp__config_read_file'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:74:
undefined reference to `__imp__config_destroy'
libconfig_tests-tests.o: In function `parse_string_and_compare_error':
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:86:
undefined reference to `__imp__config_init'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:87:
undefined reference to `__imp__config_read_string'
/home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:95:
undefined reference to `__imp__config_destroy'
collect2: ld returned 1 exit status
make[2]: ** [libconfig_tests.exe] Erro 1
make[2]: Saindo do diretório
`/home/devstar22/projects/3rd/libconfig-1.4.8/tests'
make[1]: ** [all-recursive] Erro 1
make[1]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8'
make: ** [all] Erro 2


For example, line 37 in tests.c is:
config_init(&cfg);

but the linker calls __imp__config_init(), which is wrong.

I read this is related to ms runtime and dllimport/dllexport. But I
couldn't find anything which helps me to resolve the problem.

Does anyone here know how to resolve this problem?

Thanks in advance.

-- 
Atenciosamente,
Leandro

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to