Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=8837867&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 03:08:55 2016
Кодировка: Windows-1251
FFTW и Visual Studio 2008 [FIXED] - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все
Pierre
unidentified

Рег.: 06.09.2005
Сообщений: 243
Из: V544
Рейтинг: 178
  Re: FFTW и Visual Studio 2008 [re: unkulunkulu]
      10.08.2009 00:11
 

Уперся я в итоге в следующее
при любом выборе настроек /iface
в конвенции имен предполагается, что перед именем стоит подчеркивание _

но как мы видели из листинга dumpbin
имена присутствуют только без первого подчеркивания

В сообщениях об ошибках мы как раз и видим, что линкер
пытается найти процедуру с подчеркиванием

Error 1 error LNK2019: unresolved external symbol _DFFTW_CLEANUP referenced in function _MAIN__ FFTWexp.obj

Опции, управляющей первым подчеркиванием я не нашел.

Попытка в программе писать

call _DFFTW_CLEANUP

приводит к Error 1 error #5192: Lead underscore not allowed

Что можно в таком случае сделать?






Лето прошло,
наконец-то растаял снег...
fedul
Вперед, Эдуард!

Рег.: 08.04.2004
Сообщений: 1538
Рейтинг: 2112
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      10.08.2009 13:00
 


 
В ответ на:

By default, FFTW configures its Fortran interface to work with the first compiler it finds, e.g. g77. To configure for a different, incompatible Fortran compiler foobar, use ./configure F77=foobar when installing FFTW. (In the case of g77, however, FFTW 3.x also includes an extra set of Fortran-callable routines with one less underscore at the end of identifiers, which should cover most other Fortran compilers on Linux at least.)



Это делал?

Pierre
unidentified

Рег.: 06.09.2005
Сообщений: 243
Из: V544
Рейтинг: 178
  Re: FFTW и Visual Studio 2008 [re: fedul]
      10.08.2009 14:00
 

Этого я не делал. Я так понял, что использовать configure надо, если я хочу сам перекомпилить весь FFTW.

Вообще авторы предлагают концепцию самому перекомпилиь

MinGW: this is a free Unix-like environment for Windows based on the GNU C compiler (gcc). We recommend this route because it produces native Windows executables/libraries, but lets you use our standard Unix build scripts and Makefiles, automatically picks good compiler flags, and so on. See below for instructions

я даже установил этот MinGW, но вот как с ним обращаться, где эту команду ./configure писать я не представляю.

Как я уже писал постом выше, проблема, мне кажется, в том, чтобы откомпилировать так, чтобы
перед именами функций прошитых в .dll стояли бы подчеркивания. Но и как это сделать я не представляю (даже если бы я умел работать с MinGW)




Лето прошло,
наконец-то растаял снег...
unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      10.08.2009 14:17
 

Quote:

Как я уже писал постом выше, проблема, мне кажется, в том, чтобы откомпилировать так, чтобы
перед именами функций прошитых в .dll стояли бы подчеркивания. Но и как это сделать я не представляю (даже если бы я умел работать с MinGW)


Ты же dll не можешь перекомпилить. В ней имена как раз соответствуют тому декорированию, информацию о котором я смог найти (да, на википедии =), а вот твой компилятор декорирует по-сишному. Вот мне и кажется, что он так декорирует, чтобы было удобнее обращаться к функциям, написанным на C, т.е. якобы для "лошков"

Обрати внимание еще на одну вещь: дело не только в подчеркивании, но и в регистре символов, он их за тебя капитализировал (потому что Fortran - case-insensitive, а тот же C - case-sensitive, и можно по-разному это реализовывать. Википедия пишет, что обычно фортрановские функции декорируют приведением к нижнему регистру и дописыванием подчеркивания в конец, у тебя же мы видим приведение к верхнему регистру и дописывание подчеркивания в начало, вот это и надо поправить: В НАСТРОЙКАХ КОМПИЛЯЦИИ ТВОЕЙ ПРОГРАММЫ)

unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: FFTW и Visual Studio 2008 [re: unkulunkulu]
      10.08.2009 14:19
 

Кстати, если бы КОНТРА сейчас заглядывал в форум, он бы мог предложить текстовую замени имен _ТАКОГО_ВИДА к именам такого_вида_ перед передачей файла линковщику, например, программкой sed.

Pierre
unidentified

Рег.: 06.09.2005
Сообщений: 243
Из: V544
Рейтинг: 178
  Re: FFTW и Visual Studio 2008 [re: unkulunkulu]
      10.08.2009 14:26
 

В настройках компилятора, судя по help нет возможности убрать переднее подчеркивание в случае если
программа делается для win32.
Однако, если целевая платформа Win64, то он не дописывает ни переднего подчеркивания
ни @, ни подчеркивания сзади.

В win64 *.dll
имена такие

 0 000DCD8F DFFTW_CLEANUP
 1 00145CD0 DFFTW_CLEANUP_THREADS
 2 000DCDB6 DFFTW_DESTROY_PLAN
 3 000DC0CA DFFTW_EXECUTE
 4 000DC0E5 DFFTW_EXECUTE_DFT
 5 000DC1AF DFFTW_EXECUTE_DFT_C2R
 6 000DC146 DFFTW_EXECUTE_DFT_R2C
 7 000DC21E DFFTW_EXECUTE_R2R
 8 000DC12E DFFTW_EXECUTE_SPLIT_DFT
 9 000DC1E7 DFFTW_EXECUTE_SPLIT_DFT_C2R
 A 000DC17B DFFTW_EXECUTE_SPLIT_DFT_R2C

т.е. все вроде бы нормально. Однако на

call DFFTW_CLEANUP

та же ругань

Error 1 error LNK2019: unresolved external symbol DFFTW_CLEANUP referenced in function MAIN__ FFTWexpx64.obj

Вот это вообще абзац.

Я видимо до дачи, спасибо за содержательные ответы, вернусь вечером.





Лето прошло,
наконец-то растаял снег...
unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      10.08.2009 14:29
 

регистр не совпадает же, в этом и беда.

Ладно, всегда остается вариант скомпилить в асм (или декомпилить объектник, заменить имена, закомпилить обратно и передать линкеру, но это для мужчин с железными яйцами =)

unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: FFTW и Visual Studio 2008 [re: unkulunkulu]
      10.08.2009 15:57
 

Хотя я что-то тупанул, регистр же совпадает :D
Ты lib-файл перегенерировал, когда с win64-dll пробовал? Во время компиляции файл dll вообще не используется.

maver
жоном

Рег.: 15.12.2004
Сообщений: 240
Рейтинг: 13
  Re: FFTW и Visual Studio 2008 [re: unkulunkulu]
      10.08.2009 17:24
2

все правильно, дело в регистре, а не в подчеркивании перед именем.
регистр можно поменять в project properties/fortran/external procedures/name case interpretation

Чтобы работало надо:
1) поставь там lowercase
2) там же в настройках добавить нижнее подчеркивание после каждого имени


только что проверено и на 32 и на 64 битах.
И не забудь откомпилить библиотеку из соответствующих разрядности .def файлов для fftw

Pierre
unidentified

Рег.: 06.09.2005
Сообщений: 243
Из: V544
Рейтинг: 178
  Re: FFTW и Visual Studio 2008 [re: maver]
      10.08.2009 17:51
 

Всем спасибо, проблему решил Maver)))

Выводы:

В настройках проекта
Fortran -> External Procedures -> Name Case Interpretation -> Lower Case (/names:lowercase)
Fortran -> External Procedures -> Append Underscore to External Names -> Yes(/assume:underscore)

не забыть кинуть *.dll в Windows\system32\

или в свойствах проекта
Debugging -> Environment

PATH=%PATH%;Path to the folder containing libfftw3-3.dll

Еще раз всем спасибо за содержательную дискуссию




Лето прошло,
наконец-то растаял снег...
unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      10.08.2009 20:04
1

Quote:

В настройках проекта
Fortran -> External Procedures -> Name Case Interpretation -> Lower Case (/names:lowercase)
Fortran -> External Procedures -> Append Underscore to External Names -> Yes(/assume:underscore)


Я же тебе про это писал с самой середины. Ладно, я рад :D

Страницы: 0 | 20 | показать все

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в