Как связать функции cygGL-1.dll при компиляции C-кода в cygwin
Здравствуйте уважаемые форумчане!
Прошу помощи по данному вопросу. Хочу откомпилировать Genius-TCAD (CogenDa, open source code). Для работы необходимы пакеты PETSc, VTK. Использую Windows 7, но поскольку я не нашел, как установить PETSc под Windows, то решил использовать Cygwin. Под Cygwin, PETSc(версия 3.1-p8), VTK(5.8.0) установились относительно легко. Genius-TCAD можно компилировать с помощью waf, но также нашёл версию с cmake. Но компиляция основного файла Genius-TCAD обрывается, поскольку не работают ссылки на внешние функции. Например, при использовании cmake возникает ошибка:
( win32draw.c:(.text+0x760): undefined reference to `_imp__GetStockObject@4' )
Нашёл, что функция, к примеру, SetBitmapDimension есть в cygGL-1.dll. Такая же проблема с VTK (libvtkIO.a, libvtkCommon.a):
Но здесь я не нашел, где находятся внешние функции.
Фактически основной файл компилируется командой:
/usr/bin/c++.exe -O3 -DNDEBUG -Wl,--enable-auto-import CMakeFiles/genius.dir/main.o -o genius.exe -Wl,--out-implib,libgenius.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -L/usr/Genius-TCAD-Open-master2/src/solution -L/usr/Genius-TCAD-Open-master2/src/source -L/usr/Genius-TCAD-Open-master2/src/solver -L/usr/Genius-TCAD-Open-master2/src/bc -L/usr/Genius-TCAD-Open-master2/src/hook -L/usr/Genius-TCAD-Open-master2/src/meshgen -L/usr/Genius-TCAD-Open-master2/src/contrib/dfise -L/usr/Genius-TCAD-Open-master2/src/contrib/tif3d -L/usr/Genius-TCAD-Open-master2/src/contrib/stanford -L/usr/Genius-TCAD-Open-master2/src/contrib/spline -L/usr/Genius-TCAD-Open-master2/src/fe -L/usr/Genius-TCAD-Open-master2/src/quadrature -L/usr/Genius-TCAD-Open-master2/src/interpolation -L/usr/Genius-TCAD-Open-master2/src/geom -L/usr/Genius-TCAD-Open-master2/src/mesh -L/usr/Genius-TCAD-Open-master2/src/material -L/usr/Genius-TCAD-Open-master2/src/parser -L/usr/Genius-TCAD-Open-master2/src/base -L/usr/Genius-TCAD-Open-master2/src/partition -L/usr/Genius-TCAD-Open-master2/src/math -L/usr/Genius-TCAD-Open-master2/src/utils -L/usr/Genius-TCAD-Open-master2/src/contrib/mxml -L/usr/Genius-TCAD-Open-master2/src/contrib/expreval -L/usr/Genius-TCAD-Open-master2/src/contrib/csabathy -L/usr/Genius-TCAD-Open-master2/src/contrib/spice -L/usr/Genius-TCAD-Open-master2/src/contrib/klu -L/usr/Genius-TCAD-Open-master2/src/contrib/nn -L/usr/Genius-TCAD-Open-master2/src/contrib/ann -L/usr/Genius-TCAD-Open-master2/src/contrib/triangle -L/usr/Genius-TCAD-Open-master2/src/contrib/trex -L/usr/local/lib/vtk-5.8 -L/packages/petsc-3.1-p8/win32-gnu/lib solution/libsolution.a source/libsource.a solver/libsolver.a bc/libbc.a solution/libsolution.a hook/libhook.a meshgen/libmeshgen.a contrib/dfise/libdfise.a contrib/tif3d/libtif3d.a contrib/stanford/libstanford.a solver/libsolver.a contrib/spline/libspline.a fe/libfe.a quadrature/libquadrature.a interpolation/libinterpolation.a geom/libgeom.a mesh/libmesh.a material/libmaterial.a parser/libparser.a base/libbase.a partition/libpartition.a math/libmath.a utils/libutils.a contrib/mxml/libmxml.a contrib/expreval/libexpreval.a contrib/csabathy/libcsabathy.a contrib/spice/libspice.a contrib/klu/libklu.a contrib/nn/libnn.a contrib/ann/libann.a contrib/triangle/libtriangle.a contrib/trex/libtrex.a /usr/local/lib/vtk-5.8/libvtkIO.a /usr/local/lib/vtk-5.8/libvtkFiltering.a /usr/local/lib/vtk-5.8/libvtkCommon.a /packages/petsc-3.1-p8/win32-gnu/lib/libpetsc.a /packages/petsc-3.1-p8/win32-gnu/lib/libsuperlu_4.0.a /packages/petsc-3.1-p8/win32-gnu/lib/libflapack.a /packages/petsc-3.1-p8/win32-gnu/lib/libfblas.a -lgfortran -ldl
Пожалуйста подскажите, как мне выйти из этой проблемы? Как заставить компилятор найти, например, SetBitmapDimension в cygGL-1.dll. Заранее благодарен.