2014-01-21 4 views
1

Я знаю C++ и компилирую небольшие плагины (всегда на основе аналогичного и выложенного рабочего процесса). Хотя в настоящее время мне нужно скомпилировать последнюю версию FFTW в статическую библиотеку (или получить ее из скомпилированной версии, которая должна быть намного проще), и это дает мне безумно трудное время. Наверное, потому что я не знаю, что делать и компилировать. В качестве заметки я работаю над Windows с Visual Studio.Как использовать библиотеку импорта библиотек FFTW .lib как статический .lib в моем проекте?

Поскольку я действительно хочу знать, как это должно работать, я задаю здесь вопрос.

В принципе мне нужен статический .lib библиотеки fftw3f в Windows, который я могу включить в другой проект Visual Studio.

Первое, что я сделал, было загрузить 64-битную dll из FFTW с веб-сайта (надеясь, что смогу использовать это). http://www.fftw.org/install/windows.html

Затем я выполнил прилагаемый шаг, который они изложили, то есть: Запустите следующее в lib.exe.

lib /def:libfftw3-3.def 
lib /def:libfftw3f-3.def 
lib /def:libfftw3l-3.def 

Я тоже это сделал и получил .lib-файл, который я мог бы использовать в своем проекте правильно. Я смог скомпилировать мой проект, но построение вывода, по-видимому, динамически связано с библиотекой, а не включает ее как статическую библиотеку.

Я компилирую свой проект в .dll, но требую, чтобы библиотека fftw3f была статически включена в мой вывод.

Использование lib.exe /list libfftw3f-3.lib Я смог узнать, что файл lib ссылался на libfftw3f-3.dll.

По моим результатам Google это будет означать файл .lib, который я создал это библиотека DLL импорта вместо статической библиотеки.

Трудно понять, как выразить свой вопрос, потому что я не уверен, что такое терминология и что происходит за кулисами. Я предполагаю:

  • Как использовать файл libfftw3f-3.lib, созданный из lib.exe как статическую библиотеку в моем собственном проекте. Так что он включен в мою выходную .dll вместо динамически связанной?

Основываясь на том, что я узнал из комментариев/ответов, которые я буду счастлив, чтобы обновить/изменить/перефразировать мой вопрос, чтобы сделать больше смысла для большинства других пользователей, как я вероятно путь с терминологией

ответ

1

Вы не можете рассчитывать преобразовать DLL в статическую библиотеку.

Чтобы создать статическую библиотеку, вам необходимо перекомпилировать библиотеку из исходного кода с целевой целью вывода, являющейся статической библиотекой. Если вы не можете получить исходный код, ваша цель не может быть достигнута.

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