Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8835596&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 00:31:45 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
  FFTW и Visual Studio 2008 [FIXED]
      09.08.2009 20:55
1

Необходимо осуществлять вызов подпрограмм быстрого преобразования Фурье
из программы на Fortran'е. Разработка в Visual Studio 2008, компилятор Intel Fortran 11.0.072.

Разработчики поставляют откомпилированные для WinXP *.dll файлы и к ним *.def.

В интернетах вычитал, что надо из этих *.def с помощью команды lib компилятора сделать
*.lib для того чтобы программа могла вызывать функции прошитые в .dll

Из командной строки intel fortran выполнил

lib /machine:i386 /def:libfftw3-3.def

получил libfftw3-3.lib

Теперь вопрос - как правильно привязать
эти *.lib к программе, чтобы она "видела" зашитые функции.

Пробовал два варианта:
1. Непосредственно подключал файлы .lib к проекту:
Project - Add Existing Item...

2. Подкидывал .lib в каталог библиотек intel fortran

C:\Program Files\Intel\Compiler\11.0\072\fortran\lib\ia32

и в свойствах проекта указывал
Linker - input - Additional Dependencies
имя библиотеки

а в Linker - General - Additional Library Directoties на всякий случай
и путь C:\Program Files\Intel\Compiler\11.0\072\fortran\lib\ia32

Результат линкирования
программы вида

*****************************************
program FFTWexp

include 'fftw3.f'

integer(4),parameter::N = 1024
integer*8::plan
complex,dimension(1:N)::in, out

call dfftw_plan_dft_1d(plan,N,in,out,FFTW_FORWARD,FFTW_ESTIMATE)
call dfftw_destroy_plan(plan)

pause

end program FFTWexp
*********************************************
выдает ошибки

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

Error 2 error LNK2019: unresolved external symbol _DFFTW_DESTROY_PLAN referenced in function _MAIN__ FFTWexp.obj

Error 3 fatal error LNK1120: 2 unresolved externals Debug\FFTWexp.exe


Вопрос: что это может быть, что я делаю неправильно?

Заранее спасибо)










Редактировал Pierre (10.08.2009 17:52)
Лето прошло,
наконец-то растаял снег...
Pierre
unidentified

Рег.: 06.09.2005
Сообщений: 243
Из: V544
Рейтинг: 178
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      09.08.2009 21:05
 

Вот еще ссылка на сайт, советы с которого я использовал

http://www.math.ucla.edu/~anderson/270e.1.08f/Assign5/Assign...




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

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

Дай вценить def-файл.

Pierre
unidentified

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

Файл достаточно большой.
Вот только часть

LIBRARY libfftw3-3.dll
EXPORTS
dfftw_cleanup_
dfftw_cleanup__
dfftw_cleanup_threads_
dfftw_cleanup_threads__
dfftw_destroy_plan_
dfftw_destroy_plan__
dfftw_execute_
dfftw_execute__
dfftw_execute_dft_
dfftw_execute_dft__
dfftw_execute_dft_c2r_
dfftw_execute_dft_c2r__
dfftw_execute_dft_r2c_
dfftw_execute_dft_r2c__
dfftw_execute_r2r_
dfftw_execute_r2r__
dfftw_execute_split_dft_
dfftw_execute_split_dft__
dfftw_execute_split_dft_c2r_
dfftw_execute_split_dft_c2r__
dfftw_execute_split_dft_r2c_
dfftw_execute_split_dft_r2c__
dfftw_export_wisdom_
dfftw_export_wisdom__
dfftw_flops_
dfftw_flops__
dfftw_forget_wisdom_
dfftw_forget_wisdom__
dfftw_import_system_wisdom_
dfftw_import_system_wisdom__
dfftw_import_wisdom_
dfftw_import_wisdom__
dfftw_init_threads_
dfftw_init_threads__
dfftw_plan_dft_
dfftw_plan_dft_1d_
dfftw_plan_dft_1d__
dfftw_plan_dft_2d_
dfftw_plan_dft_2d__
dfftw_plan_dft_3d_
dfftw_plan_dft_3d__
dfftw_plan_dft__
dfftw_plan_dft_c2r_
dfftw_plan_dft_c2r_1d_
dfftw_plan_dft_c2r_1d__
dfftw_plan_dft_c2r_2d_
dfftw_plan_dft_c2r_2d__
dfftw_plan_dft_c2r_3d_
dfftw_plan_dft_c2r_3d__
dfftw_plan_dft_c2r__
dfftw_plan_dft_r2c_
dfftw_plan_dft_r2c_1d_
dfftw_plan_dft_r2c_1d__
dfftw_plan_dft_r2c_2d_
dfftw_plan_dft_r2c_2d__
dfftw_plan_dft_r2c_3d_
dfftw_plan_dft_r2c_3d__
dfftw_plan_dft_r2c__
dfftw_plan_guru_dft_
dfftw_plan_guru_dft__
dfftw_plan_guru_dft_c2r_
dfftw_plan_guru_dft_c2r__
dfftw_plan_guru_dft_r2c_
dfftw_plan_guru_dft_r2c__
dfftw_plan_guru_r2r_
dfftw_plan_guru_r2r__
dfftw_plan_guru_split_dft_
dfftw_plan_guru_split_dft__
dfftw_plan_guru_split_dft_c2r_
dfftw_plan_guru_split_dft_c2r__
dfftw_plan_guru_split_dft_r2c_
dfftw_plan_guru_split_dft_r2c__
dfftw_plan_many_dft_
dfftw_plan_many_dft__
dfftw_plan_many_dft_c2r_
dfftw_plan_many_dft_c2r__
dfftw_plan_many_dft_r2c_
dfftw_plan_many_dft_r2c__
dfftw_plan_many_r2r_
dfftw_plan_many_r2r__
dfftw_plan_r2r_
dfftw_plan_r2r_1d_
dfftw_plan_r2r_1d__
dfftw_plan_r2r_2d_
dfftw_plan_r2r_2d__
dfftw_plan_r2r_3d_
dfftw_plan_r2r_3d__
dfftw_plan_r2r__
dfftw_plan_with_nthreads_
dfftw_plan_with_nthreads__
dfftw_print_plan_
dfftw_print_plan__



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

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

ага, ок.
Теперь так: зайди в Пуск->Programs->Visual Studio 2008->Visual Studio Tools->Visual Studio 2008 Command Prompt.
Оттуда введи
code:
dumpbin /exports "путь к файлу .dll в кавычках"

Там будет примерно столько же текста. Тоже скопируй сюда вывод. Можно просто строк 10 :)

Pierre
unidentified

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

Вот результат

1 0 000A8109 DFFTW_CLEANUP@0
  2 1 0011E0FB DFFTW_CLEANUP_THREADS@0
  3 2 000A80F2 DFFTW_DESTROY_PLAN@4
  4 3 000A80D0 DFFTW_EXECUTE@4
  5 4 000A8690 DFFTW_EXECUTE_DFT@12
  6 5 000A9091 DFFTW_EXECUTE_DFT_C2R@12
  7 6 000A8B96 DFFTW_EXECUTE_DFT_R2C@12
  8 7 000A95E2 DFFTW_EXECUTE_R2R@12
  9 8 000A86F3 DFFTW_EXECUTE_SPLIT_DFT@20
 10 9 000A90DD DFFTW_EXECUTE_SPLIT_DFT_C2R@16



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

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

Попробуй в той программе снести лишнее и вызвать dfftw_cleanup() и закомпилить.

Pierre
unidentified

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

результат тот же

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




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

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

А, подожди-ка.
Ты в Additional Dependencies имя какой библиотеки добавил? Туда надо lib добавлять.

unkulunkulu
unkulunkulunkulu

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

Хотя, прочитав еще раз первый пост, понял, что скорее всего ты правильно сделал.

Pierre
unidentified

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

там вроде так и прописано libfftw3-3.lib,
мистика)



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

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

У меня плохое предчувствие, что тут надо знать механизмы декорации имен именно у компилятора фортрана. У меня сейчас на изучение этого нет сил :crazy:
Странно, что у экспортируемых функций имена выглядят как NAME@number. В Си, например, они бы выглядели _NAME@number. Еще странно, что судя по выводу dumpbin dll-ка вообще с def-файлом не компилировалась.

Ладно, такая телепатия: поищи в настройках _компилятора_ Intel (там же, в настройках проекта должна быть соответствующая категория, рядом с Linker и C/C++), ищи в направлении calling conventions или типа того. Или name decoration. Все, что с этим связано - напиши.

unkulunkulu
unkulunkulunkulu

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

Кстати, посмотри внимательнее на вывод dumpbin, нет ли там имен функций без значка собаки

unkulunkulu
unkulunkulunkulu

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

Да, вот скажи, ты знаешь каким компилятором эта dll-ка компилировалась?

Pierre
unidentified

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

Разработчики пишут, что

These DLLs were created by us, cross-compiled from GNU/Linux using MinGW

в выводе dumpbin есть еще и такое ниже

   47 2E 000A663D dfftw_cleanup_
   48 2F 000A4B7B dfftw_cleanup__
   49 30 0011E0CB dfftw_cleanup_threads_
   50 31 0011E0A5 dfftw_cleanup_threads__
   51 32 000A662E dfftw_destroy_plan_
   52 33 000A4B6C dfftw_destroy_plan__
   53 34 000A660E dfftw_execute_
   54 35 000A4B4C dfftw_execute__
   55 36 000A6D47 dfftw_execute_dft_
   56 37 000A5285 dfftw_execute_dft__
   57 38 000A7A32 dfftw_execute_dft_c2r_
   58 39 000A5F70 dfftw_execute_dft_c2r__
   59 3A 000A73C1 dfftw_execute_dft_r2c_
   60 3B 000A58FF dfftw_execute_dft_r2c__
   61 3C 000A80AA dfftw_execute_r2r_
   62 3D 000A65E8 dfftw_execute_r2r__
   63 3E 000A6DA6 dfftw_execute_split_dft_
   64 3F 000A52E4 dfftw_execute_split_dft__
   65 40 000A7A7C dfftw_execute_split_dft_c2r
   66 41 000A5FBA dfftw_execute_split_dft_c2r
   67 42 000A740B dfftw_execute_split_dft_r2c
   68 43 000A5949 dfftw_execute_split_dft_r2c
   69 44 000A6647 dfftw_export_wisdom_
   70 45 000A4B85 dfftw_export_wisdom__
   71 46 000A66DA dfftw_flops_
   72 47 000A4C18 dfftw_flops__
   73 48 000A6642 dfftw_forget_wisdom_
   74 49 000A4B80 dfftw_forget_wisdom__
   75 4A 000A66A3 dfftw_import_system_wisdom_
   76 4B 000A4BE1 dfftw_import_system_wisdom_
   77 4C 000A6672 dfftw_import_wisdom_
   78 4D 000A4BB0 dfftw_import_wisdom__
   79 4E 0011E0B9 dfftw_init_threads_
   80 4F 0011E093 dfftw_init_threads__
   81 50 000A66E9 dfftw_plan_dft_
   82 51 000A6796 dfftw_plan_dft_1d_
   83 52 000A4CD4 dfftw_plan_dft_1d__
   84 53 000A67D5 dfftw_plan_dft_2d_
   85 54 000A4D13 dfftw_plan_dft_2d__
   86 55 000A681E dfftw_plan_dft_3d_
   87 56 000A4D5C dfftw_plan_dft_3d__
   88 57 000A4C27 dfftw_plan_dft__
   89 58 000A744B dfftw_plan_dft_c2r_
   90 59 000A74E7 dfftw_plan_dft_c2r_1d_
   91 5A 000A5A25 dfftw_plan_dft_c2r_1d__
   92 5B 000A751C dfftw_plan_dft_c2r_2d_
   93 5C 000A5A5A dfftw_plan_dft_c2r_2d__
   94 5D 000A755B dfftw_plan_dft_c2r_3d_
   95 5E 000A5A99 dfftw_plan_dft_c2r_3d__
   96 5F 000A5989 dfftw_plan_dft_c2r__
   97 60 000A6DDA dfftw_plan_dft_r2c_
   98 61 000A6E76 dfftw_plan_dft_r2c_1d_
   99 62 000A53B4 dfftw_plan_dft_r2c_1d__
  100 63 000A6EAB dfftw_plan_dft_r2c_2d_
  101 64 000A53E9 dfftw_plan_dft_r2c_2d__
  102 65 000A6EEA dfftw_plan_dft_r2c_3d_
  103 66 000A5428 dfftw_plan_dft_r2c_3d__
  104 67 000A5318 dfftw_plan_dft_r2c__
  105 68 000A6A44 dfftw_plan_guru_dft_
  106 69 000A4F82 dfftw_plan_guru_dft__
  107 6A 000A7762 dfftw_plan_guru_dft_c2r_
  108 6B 000A5CA0 dfftw_plan_guru_dft_c2r__
  109 6C 000A70F1 dfftw_plan_guru_dft_r2c_
  110 6D 000A562F dfftw_plan_guru_dft_r2c__
  111 6E 000A7EE2 dfftw_plan_guru_r2r_
  112 6F 000A6420 dfftw_plan_guru_r2r__
  113 70 000A6BBD dfftw_plan_guru_split_dft_
  114 71 000A50FB dfftw_plan_guru_split_dft__
  115 72 000A78BA dfftw_plan_guru_split_dft_c
  116 73 000A5DF8 dfftw_plan_guru_split_dft_c
  117 74 000A7249 dfftw_plan_guru_split_dft_r
  118 75 000A5787 dfftw_plan_guru_split_dft_r
  119 76 000A6871 dfftw_plan_many_dft_
  120 77 000A4DAF dfftw_plan_many_dft__
  121 78 000A75A4 dfftw_plan_many_dft_c2r_
  122 79 000A5AE2 dfftw_plan_many_dft_c2r__
  123 7A 000A6F33 dfftw_plan_many_dft_r2c_
  124 7B 000A5471 dfftw_plan_many_dft_r2c__
  125 7C 000A7CAB dfftw_plan_many_r2r_
  126 7D 000A61E9 dfftw_plan_many_r2r__
  127 7E 000A7ABC dfftw_plan_r2r_
  128 7F 000A7BB2 dfftw_plan_r2r_1d_
  129 80 000A60F0 dfftw_plan_r2r_1d__
  130 81 000A7BF1 dfftw_plan_r2r_2d_
  131 82 000A612F dfftw_plan_r2r_2d__
  132 83 000A7C44 dfftw_plan_r2r_3d_
  133 84 000A6182 dfftw_plan_r2r_3d__
  134 85 000A5FFA dfftw_plan_r2r__
  135 86 0011E0AA dfftw_plan_with_nthreads_
  136 87 0011E084 dfftw_plan_with_nthreads__
  137 88 000A66B5 dfftw_print_plan_
  138 89 000A4BF3 dfftw_print_plan__
  139 8A 000011DC fftw_assertion_failed
  140 8B 0012B1C0 fftw_cc
  141 8C 000AB487 fftw_cleanup






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

Рег.: 14.03.2004
Сообщений: 1360
Из: Москва
Рейтинг: 501
  Re: FFTW и Visual Studio 2008 [re: Pierre]
      09.08.2009 23:15
 

В Фортране по жизни какие-то траблы с подчеркиваниями. Обычно к фортрановским именам надо добавлять "_" в конец если хочешь вызвать функцию из Си, например. Если в названии функции где-то в середине уже есть "_", то все еще сложнее, иногда приходится добавлять два "__". Может тут где-то в этом косяк?
Хотя в твоем выводе вроде все имена продублированы с одним "_" и с двумя "__" на конце, так что подхватываться должны вроде как: Странно, но я бы все равно попробовал поковыряться с разными вариациями "_" на конце, вдруг?

unkulunkulu
unkulunkulunkulu

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

косяк с подчеркиваниями - это декорация имен (Name mangling, тут можешь прочитать).

Нет, вот на что надо обратить внимание: линковщик уже ничего не знает о языке, он ищет функцию _DFFTW_PLAN_DFT_1D и не может найти. Странно то, что подчеркивание стоит перед именем, хотя на википедии (ха-ха) утверждается, что для интеловского компилятора фортрана это не свойственно. Но это именно он должно быть так поступил. Поэтому все-таки надо порыться в его настройках, может быть там по умолчанию какой-то левый режим совместимости включен или еще чего. Посмотри настройки про name decoration/mangling. По идее это должно быть в свойствах проекта (я выше писал)

unkulunkulu
unkulunkulunkulu

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

А, не заметил, что собеседник новый появился, в общем обращался я к топикстартеру в этом посте.

Pierre
unidentified

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

нашел в help
iface - Specifies the default calling convention and argument-passing convention for an application.
разбираюсь





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

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

Скорее всего когда разберешься, заработает. Я пошел :D

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

Technical >> Development (Archive)

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

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

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

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

Переход в