[CMake] Add_library shared or module: problem with mingw32

Gauthier Quesnel gauthier.quesnel at gmail.com
Tue Aug 19 06:09:18 EDT 2008


Hi all,

I have a problem to compile plugin (loadable modules) on Windows with
MinGW. When I build my plugin with add_library(myplugin SHARED ....),
it works. I can open the plugin with the functions g_module_* [1]. The
linking log:

Linking CXX shared library libcsv.dll

cd C:\DOCUME~1\homer\git\vle\build\src\vle\oov\plugins && "C:\Program Files\CMak
e 2.6\bin\cmake.exe" -E cmake_link_script CMakeFiles\csv.dir\link.txt --verbose=
1

C:\MinGW\bin\g++.exe    -shared -o libcsv.dll -Wl,--out-implib,libcsv.dll.a -Wl,
--major-image-version,0,--minor-image-version,0 CMakeFiles\csv.dir\csv.obj -LC:\
DOCUME~1\homer\git\vle\build\src\vle\oov -LC:\DOCUME~1\homer\git\vle\build\src\v
le\vpz -LC:\DOCUME~1\homer\git\vle\build\src\vle\graph -LC:\DOCUME~1\homer\git\v
le\build\src\vle\value -LC:\DOCUME~1\homer\git\vle\build\src\vle\data -LC:\DOCUM
E~1\homer\git\vle\build\src\vle\utils -LC:\DOCUME~1\homer\git\vle\build\src\vle\
geometry -LC:\Docume~1\homer\vle\lib ..\libvleoov.dll.a ..\..\vpz\libvlevpz.dll.
a ..\..\graph\libvlegraph.dll.a ..\..\value\libvlevalue.dll.a ..\..\data\libvled
ata.dll.a ..\..\utils\libvleutils.dll.a -lwsock32 -lnetapi32 -lz -lglibmm-2.4 -l
gobject-2.0 -lsigc-2.0 -lglib-2.0 -lintl -liconv -lxml++-2.6 -lxml2 -lgthread-2.
0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -lintl -liconv -lxml++-2.6 -l
xml2 -lgthread-2.0 ..\..\geometry\libvlegeometry.dll.a -lcairomm-1.0 -lcairo -lg
lib-2.0 -lintl -liconv

If I build my plugin with add_library(myplugin MODULE ...), it fails to
link:

Linking CXX shared module libcsv.dll
cd C:\DOCUME~1\homer\git\vle\build\src\vle\oov\plugins && "C:\Program Files\CMak
e 2.6\bin\cmake.exe" -E cmake_link_script CMakeFiles\csv.dir\link.txt --verbose=
1
C:\MinGW\bin\g++.exe     -o libcsv.dll -Wl,--major-image-version,0,--minor-image
-version,0 CMakeFiles\csv.dir\csv.obj -LC:\DOCUME~1\homer\git\vle\build\src\vle\
oov -LC:\DOCUME~1\homer\git\vle\build\src\vle\vpz -LC:\DOCUME~1\homer\git\vle\bu
ild\src\vle\graph -LC:\DOCUME~1\homer\git\vle\build\src\vle\value -LC:\DOCUME~1\
homer\git\vle\build\src\vle\data -LC:\DOCUME~1\homer\git\vle\build\src\vle\utils
-LC:\DOCUME~1\homer\git\vle\build\src\vle\geometry -LC:\Docume~1\homer\vle\lib
..\libvleoov.dll.a ..\..\vpz\libvlevpz.dll.a ..\..\graph\libvlegraph.dll.a ..\..
\value\libvlevalue.dll.a ..\..\data\libvledata.dll.a ..\..\utils\libvleutils.dll
.a -lwsock32 -lnetapi32 -lz -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -li
ntl -liconv -lxml++-2.6 -lxml2 -lgthread-2.0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2
.0 -lglib-2.0 -lintl -liconv -lxml++-2.6 -lxml2 -lgthread-2.0 ..\..\geometry\lib
vlegeometry.dll.a -lcairomm-1.0 -lcairo -lglib-2.0 -lintl -liconv
/mingw/lib/libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `_W
inMain at 16' collect2: ld returned 1 exit status

To build a MacOS version, I need to use the add_library (... MODULE ...)
function to create a correct plugin names MacOS (extension. So instead.
Dylib).

Have you any idea?

[1] http://library.gnome.org/devel/glib/stable/glib-Dynamic-Loading-of-Modules.html


More information about the CMake mailing list