2013-08-04 2 views
2

Я пытаюсь заставить Arpack и Arpack ++ работать в Windows 7 с Visual Studio 2010 и использовать swig для создания интерфейса, который можно использовать с C#. Это в основном создать контрольный показатель, против которого я буду измерять все дальнейшие попытки решения собственных проблем с C#, но сначала мне нужно, чтобы это работало.Arpack (++) на окнах

Мне удалось собрать Arpack, используя this guide, хотя и с небольшими изменениями, поскольку g77 больше не является компилятором Fortran, который поставляется с MinGW, вместо этого мы получаем gfortran. Дальнейшие изменения в ARmake.inc включали комментирование опции -cg89, которая вызвала ошибку (я не знаю, с какой целью это заполнено g77, но gfortran ее не принимает).

Следуя руководству далее, думая «по крайней мере, он скомпилирован сейчас, с опцией или без нее». Я продолжал dllwrap. Однако опция -lg2c не была принята, поскольку файл библиотеки libg2c не включен в новую версию MinGW. Если я попробую без опции, я получаю ошибки о неопределенных ссылках от некоторых из моих .o и соответствующих .f-файлов. Какие файлы библиотеки я должен использовать? Неужели я делаю что-то еще нелепое?

ответ

1

Я нашел ключ, кажется, используется gfortran вместо dllwrap. Вот весь процесс, который я использовал после установки MinGW и msys

1) Запустите сценарий установки после установки и убедитесь, что он не жалуется на отсутствие gcc и т. Д. Если это так, установите эти пакеты.

msys\1.0\postinstall\pi.bat 

2) Extract ARPACK файлы и патч в msys\1.0\home\yourname\ARPACK

3) Редактировать ARmake.inc и изменить FC и FFLAGS строки:

FC  = gfortran 
#FFLAGS = -O -cg89 

4) Редактировать UTIL/second.f и заменить все с этим , Это предотвращает ошибку в ETIME. Не уверен, что он делает, но он предложил http://blog.csdn.net/guillotine007/article/details/8636647

SUBROUTINE SECOND(T) 

    REAL  T 

    CALL CPU_TIME(T) 

    RETURN 

    END 

5) Компиляция в .o файлы

make lib 

6) Используйте gfortran вместо dllwrap связать и создать DLL,

gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll 

7) Результирующая dll зависит от 3 других dll: libgcc_s_dw2-1.dll, libgfortran-3.dll, libquadmath-0.dll, которые вы можете получить от установки MinGW.

+0

Я полностью забыл, что я этот вопрос все еще был открыт. Спасибо за ваш вклад. Я сам решил это с помощью 'dllwrap', он появился в более новых версиях MinGW, команда' -lg2c' должна быть заменена на '-lgfortran', предположительно связавшись с библиотекой' libgfortran-3.dll'. – Arthur

+0

Еще лучше. Ответ также напомнит мне в следующий раз, когда мне придется перекомпилировать его. – user1318499

+0

Привет, у вас есть какие-то скомпилированные библиотеки? Я хотел бы рассчитать некоторые номера условий, но я не хочу устанавливать mingw из-за этого. –

Смежные вопросы