Russian Qt Forum

Qt => Мультимедиа => Тема начата: lazy от Декабрь 14, 2011, 10:27



Название: QAudioFormat и ссылка на неразрешенный внешний симвl
Отправлено: lazy от Декабрь 14, 2011, 10:27
Здравствуйте, уважаемые форумчане.
Сразу прошу прощения, если вопрос нубский. Поиск по "ссылка на неразрешенный внешний символ" выводил на несовсем внятные ответы, поэтому крайне нуждаюсь в том, чтобы меня ткнули носом, в чем я не прав.

Пишу простенький проект по записи звука с звуковой карты. На форме кнопка, в обработчике clicked()  кнопки следующий код, который подсмотрен на doc.qt.nokia.com/4.6/qaudioinput.html

Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QtMultimedia\qaudioinput.h"
#include "qiodevice.h"
#include "QFile"
#include "QtMultimedia\qaudioformat.h"

//...

void MainWindow::on_pushButton_2_clicked()
{
    QFile outputFile;   // class member.
    QAudioInput* audio; // class member.


      outputFile.setFileName("C:\temp\test.raw");
      outputFile.open( QIODevice::WriteOnly | QIODevice::Truncate );


      QAudioFormat format; // <= и вот тут мы затыкаемся.
// .. далее идут настройки format, которые вобщем то не имеют значения, т.к. у нас затруднение с самим QAudioFormat
}
При компиляции вываливаемся с ошибками:

Код:
Выполняется сборка проекта untitled...
Настройки не изменились, этап qmake пропускается.
Запускается: «D:\QtSDK\QtCreator\bin\jom.exe»
D:\QtSDK\QtCreator\bin\jom.exe -nologo -j 2 -f Makefile.Debug
cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtCore" -I"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtGui" -I"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include" -I"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\ActiveQt" -I"debug" -I"." -I"..\untitled" -I"." -I"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\mkspecs\win32-msvc2008" -Fodebug\ @C:\temp\mainwindow.obj.3764.0.jom
mainwindow.cpp
..\untitled\mainwindow.cpp(25) : warning C4101: audio: неиспользованная локальная переменная
link /LIBPATH:"d:\QtSDK\Desktop\Qt\4.7.4\msvc2008\lib" /NOLOGO /DEBUG /MANIFEST /MANIFESTFILE:"debug\untitled.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\untitled.exe @C:\temp\untitled.exe.3764.1438.jom
mainwindow.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __thiscall QAudioFormat::~QAudioFormat(void)" (__imp_??1QAudioFormat@@QAE@XZ) в функции "private: void __thiscall MainWindow::on_pushButton_2_clicked(void)" (?on_pushButton_2_clicked@MainWindow@@AAEXXZ)
mainwindow.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __thiscall QAudioFormat::QAudioFormat(void)" (__imp_??0QAudioFormat@@QAE@XZ) в функции "private: void __thiscall MainWindow::on_pushButton_2_clicked(void)" (?on_pushButton_2_clicked@MainWindow@@AAEXXZ)
debug\untitled.exe : fatal error LNK1120: 2 неразрешенных внешних элементов

jom 1.0.6 - empower your cores

command failed with exit code 1120
command failed with exit code 2
Процесс «D:\QtSDK\QtCreator\bin\jom.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта untitled (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»


Вобщем не хочет он создавать QAudioFormat и никаких идей, в какую сторону с этим бороться я не могу придумать.

Буду признателен за любую помощь или подсказки.


Название: Re: QAudioFormat и ссылка на неразрешенный внешний симвl
Отправлено: Пантер от Декабрь 14, 2011, 10:31
В pro файле:
QT += multimedia


Название: Re: QAudioFormat и ссылка на неразрешенный внешний симвl
Отправлено: lazy от Декабрь 14, 2011, 10:40
Огромное спасибо, после добавления в файл .pro строки "QT += multimedia" перестало ругаться.  :)
А можно теперь еще попросить пояснение, "что это было"?  ::)


Название: Re: QAudioFormat и ссылка на неразрешенный внешний симвl
Отправлено: Пантер от Декабрь 14, 2011, 10:49
Ты не подключил нужный модель для линковки.


Название: Re: QAudioFormat и ссылка на неразрешенный внешний симвl
Отправлено: LisandreL от Декабрь 14, 2011, 12:59
Код
C++ (Qt)
outputFile.setFileName("C:\temp\test.raw");
надо:
Код
C++ (Qt)
outputFile.setFileName("C:\\temp\\test.raw");
или
Код
C++ (Qt)
outputFile.setFileName("C:/temp/test.raw");