2015-10-02 6 views
0

Я успешно скомпилировал 64-битную версию библиотеки ffw 3.3.4 как статическую библиотеку с исходным кодом и решением Visual Studio от «fftw-3.3-libs-visual-studio -2010.zip». Теперь я пытаюсь ссылаться на статическую библиотеку в проекте, где я использую fftw. Во время строительства/связывания я получаю LNK2001 ошибкиfftw Visual Studio 2010 скомпилированная статическая библиотека LNK2001 Ошибка __imp_fftwf

Fehler 30 error LNK2001: Nicht aufgelöstes externes Symbol "__imp_fftwf_malloc" 

SRY, у меня есть немецкая Визуальная установка Studio. В основном это говорит о том, что есть не разрешенный символ с именем «__imp_fftwf_malloc». Я получаю эту ошибку для всех функций fftw, которые я вызываю, и всегда есть это «__imp_» перед именем функции.

Я связался с библиотекой и/verbose: lib показывает мне, что библиотека была успешно выполнена. У кого-нибудь есть ключ, где может быть проблема?

EDIT1: Я сделал dumpbin на вашей библиотеке, я создал и скопировал все записи, в которых упоминался fftw_malloc, может быть, это может помочь?

public symbol 
A57BF4 fftwf_malloc 
25B fftwf_malloc 

Linker Directives 
----------------- 
/DEFAULTLIB:"libcpmtd" 
/DEFAULTLIB:"LIBCMTD" 
/DEFAULTLIB:"OLDNAMES" 
/DEFAULTLIB:"VCOMPD" 
/EXPORT:fftwf_malloc 
/EXPORT:fftwf_free 
/EXPORT:fftwf_alloc_real 
/EXPORT:fftwf_alloc_complex 

RELOCATIONS #2 
              Symbol Symbol 
    Offset Type    Applied To   Index  Name 
-------- ---------------- ----------------- -------- ------ 
00000570 SECREL      00000000   7 fftwf_malloc 
00000574 SECTION      0000   7 fftwf_malloc 
000005C0 SECREL      00000000   7 fftwf_malloc 
000005C4 SECTION      0000   7 fftwf_malloc 

RELOCATIONS #3 
              Symbol Symbol 
Offset Type    Applied To   Index  Name 
-------- ---------------- ----------------- -------- ------ 
00000024 REL32      00000000   E fftwf_kernel_malloc 
00000064 REL32      00000000  1B fftwf_kernel_free 
000000AB REL32      00000000   7 fftwf_malloc 
000000EB REL32      00000000   7 fftwf_malloc 

COFF SYMBOL TABLE 
000 00AA766F ABS notype  Static  | @comp.id 
001 00000000 SECT1 notype  Static  | .drectve 
    Section length B9, #relocs 0, #linenums 0, checksum  0 
003 00000000 SECT2 notype  Static  | .debug$S 
    Section length 1194, #relocs 10, #linenums 0, checksum  0 
005 00000000 SECT3 notype  Static  | .text 
    Section length F5, #relocs 4, #linenums 0, checksum 50F0AACD 
007 00000000 SECT3 notype() External  | fftwf_malloc 
008 00000000 SECT4 notype  Static  | .pdata 
    Section length 30, #relocs C, #linenums 0, checksum BFE4C30B 
00A 00000000 SECT4 notype  Static  | $pdata$fftwf_malloc 
00B 00000000 SECT5 notype  Static  | .xdata 
+1

Вы уверены, что вы связываетесь с библиотекой единственной точности ('fftwf'), а не с двойной точностью (' fftw')? –

+0

Я пробовал все комбинации, только одну дозу, двойную прецессию и обе библиотеки вместе. –

ответ

0

Я только столкнулся с той же проблемой. Я использовал визуальную студию 2017 и fftw-3.3-libs-visual-studio-2010.zip и новейшие исходные файлы fftw 3.6 для компиляции статической библиотеки fftw3. Он был успешно скомпилирован, но LNK2001 Error возвращены для всех функций fftw в стадии компоновки.

После некоторого эксперимента я нашел причину. Вы должны включить файл fftw3.h в исходный файл (в папке api), а не в папку с распределенной dll (предварительно скомпилированной в двоичном формате).

Тогда fftw static lib успешно связан.

ПРИМЕЧАНИЕ: после этого вы должны изменить/MT или/MTd соответственно так же, как и в конфигурации вашего проекта.