vcmohan
18th January 2008, 10:50
This may not be the forum to pose this question, but I hope some kind hearted helpful person will answer here.
I have earlier used fftw3 dll (release 2) and my plugins fftquiver and fqsharp both are linked using their lib file. I am now trying to upgrade to using the latest release 3.1.2
The instructions in the readme file of fftw dll are as follows:
In order to link to these .dll files from Visual C++, you need to
create .lib "import libraries" for them, and can do so with the "lib"
command that comes with VC++. In particular, run:
lib /machine:i386 /def:libfftw3-3.def
lib /machine:i386 /def:libfftw3f-3.def
lib /machine:i386 /def:libfftw3l-3.def
The single- and double-precision libraries use SSE and SSE2, respectively,
but should also work on older processors (the library checks at runtime
to see whether SSE/SSE2 is supported and disables the relevant code if not).
They were compiled by the GNU C compiler for MinGW, specifically:
i586-mingw32msvc-gcc (GCC) 3.4.5 (mingw special)
I have inserted these commands in the prelink step. Inspite of it I get an error stating that the ___imp___fftw3f__ calls were unresolved. The plg file of VC++ reads as
--------------------Configuration: FQ2Sharp - Win32 Release--------------------
Command Lines
Creating temporary file "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSPF.bat" with contents
[
@echo off
lib /machine:i386 /def:libfftw3f-3.def
]
Creating command line "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSPF.bat"
Creating temporary file "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSP10.tmp" with contents
[
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/FQ2Sharp.pdb" /machine:I386 /out:"Release/FQ2Sharp.dll" /implib:"Release/FQ2Sharp.lib"
.\Release\FQ2Sharp.obj
]
Creating command line "link.exe @C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSP10.tmp"
fftw3 dll import
Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Creating library libfftw3f-3.lib and object libfftw3f-3.exp
Output Window
Linking...
Creating library Release/FQ2Sharp.lib and object Release/FQ2Sharp.exp
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_destroy_plan
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_free
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_execute
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_c2r_2d
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_r2c_2d
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_malloc
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_2d
Release/FQ2Sharp.dll : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.
Results
FQ2Sharp.dll - 8 error(s), 0 warning(s)
Incase of usage of Avisynth dll, this extra step of creation of lib is not required. Why this fftw dll linkage requires it? Where I am going wrong?
Fizick does a late binding but I do not see him creating the lib.
I have earlier used fftw3 dll (release 2) and my plugins fftquiver and fqsharp both are linked using their lib file. I am now trying to upgrade to using the latest release 3.1.2
The instructions in the readme file of fftw dll are as follows:
In order to link to these .dll files from Visual C++, you need to
create .lib "import libraries" for them, and can do so with the "lib"
command that comes with VC++. In particular, run:
lib /machine:i386 /def:libfftw3-3.def
lib /machine:i386 /def:libfftw3f-3.def
lib /machine:i386 /def:libfftw3l-3.def
The single- and double-precision libraries use SSE and SSE2, respectively,
but should also work on older processors (the library checks at runtime
to see whether SSE/SSE2 is supported and disables the relevant code if not).
They were compiled by the GNU C compiler for MinGW, specifically:
i586-mingw32msvc-gcc (GCC) 3.4.5 (mingw special)
I have inserted these commands in the prelink step. Inspite of it I get an error stating that the ___imp___fftw3f__ calls were unresolved. The plg file of VC++ reads as
--------------------Configuration: FQ2Sharp - Win32 Release--------------------
Command Lines
Creating temporary file "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSPF.bat" with contents
[
@echo off
lib /machine:i386 /def:libfftw3f-3.def
]
Creating command line "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSPF.bat"
Creating temporary file "C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSP10.tmp" with contents
[
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/FQ2Sharp.pdb" /machine:I386 /out:"Release/FQ2Sharp.dll" /implib:"Release/FQ2Sharp.lib"
.\Release\FQ2Sharp.obj
]
Creating command line "link.exe @C:\DOCUME~1\VC4536~1.MOH\LOCALS~1\Temp\RSP10.tmp"
fftw3 dll import
Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Creating library libfftw3f-3.lib and object libfftw3f-3.exp
Output Window
Linking...
Creating library Release/FQ2Sharp.lib and object Release/FQ2Sharp.exp
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_destroy_plan
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_free
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_execute
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_c2r_2d
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_r2c_2d
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_malloc
FQ2Sharp.obj : error LNK2001: unresolved external symbol __imp__fftwf_plan_dft_2d
Release/FQ2Sharp.dll : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.
Results
FQ2Sharp.dll - 8 error(s), 0 warning(s)
Incase of usage of Avisynth dll, this extra step of creation of lib is not required. Why this fftw dll linkage requires it? Where I am going wrong?
Fizick does a late binding but I do not see him creating the lib.