Top.Mail.Ru
Ответы

LNK1120: неразрешенных внешних элементов: 7! C++

Нужна помощь! Ошибка в проекте...

Вот вывод-сборки:
Сборка начата…
1>------Сборка начата: проект: Project4, Конфигурация: Debug Win32 ------
1>Source.cpp
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInOpen@24 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInClose@4 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInPrepareHeader@12 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInUnprepareHeader@12 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInAddBuffer@12 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInStart@4 в функции _main.
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__waveInReset@4 в функции _main.
1>C:\Users\User\Source\Repos\Project4\Debug\Project4.exe : fatal error LNK1120: неразрешенных внешних элементов: 7
1>Сборка проекта "Project4.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Вот сам код:
#include "windows.h"
#include "mmsystem.h"
#include "mmeapi.h"
#include "iostream.h"
using namespace std;

HWAVEIN in;
WAVEHDR wavehdr;

const int Size = 7910;

char buf[Size] = "";

int main() {
WAVEFORMATEX Format;
Format.wFormatTag = WAVE_FORMAT_PCM;
Format.wBitsPerSample = 8;
Format.nChannels = 1;
Format.nSamplesPerSec = 8000;
waveInOpen(&in, WAVE_MAPPER, &Format, NULL, 0L, CALLBACK_WINDOW);
wavehdr.lpData = buf;
wavehdr.dwBufferLength = Size;
wavehdr.dwBytesRecorded = 0;
wavehdr.dwUser = 0;
wavehdr.dwFlags = 0;
wavehdr.dwLoops = 0;
wavehdr.lpNext = 0;
wavehdr.reserved = 0;
waveInPrepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInAddBuffer(in, &wavehdr, sizeof(WAVEHDR));
waveInStart(in);
Sleep(1000);
waveInReset(in);
waveInUnprepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInClose(in);
cout << "Recorded: " << wavehdr.dwBytesRecorded << " bytes" << endl;

};

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

#include <windows.h>
#include <mmsystem.h>
#include <mmeapi.h>
#include <iostream>
#include <cstdlib>
#pragma comment(lib,"winmm.lib")
using namespace std;
int main() {
HWAVEIN in;
WAVEHDR wavehdr;
const int Size = 7910;
char buf[Size] = { 0 };
WAVEFORMATEX Format;
Format.wFormatTag = WAVE_FORMAT_PCM;
Format.wBitsPerSample = 8;
Format.nChannels = 1;
Format.nSamplesPerSec = 8000;
waveInOpen(&in, WAVE_MAPPER, &Format, NULL, 0L, CALLBACK_WINDOW);
wavehdr.lpData = buf;
wavehdr.dwBufferLength = Size;
wavehdr.dwBytesRecorded = 0;
wavehdr.dwUser = 0;
wavehdr.dwFlags = 0;
wavehdr.dwLoops = 0;
wavehdr.lpNext = 0;
wavehdr.reserved = 0;
waveInPrepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInAddBuffer(in, &wavehdr, sizeof(WAVEHDR));
waveInStart(in);
Sleep(1000);
waveInReset(in);
waveInUnprepareHeader(in, &wavehdr, sizeof(WAVEHDR));
waveInClose(in);
cout << "Recorded: " << wavehdr.dwBytesRecorded << " bytes" << endl;
system("pause > nul");
};

Аватар пользователя
Просветленный

Добавьте такую строку:
#pragma comment(lib, "winmm")

Аватар пользователя
Ученик

Проблема связана с отсутствием подключения библиотеки winmm.lib, которая содержит реализации функций waveIn*. В Visual Studio добавьте её в свойства проекта: перейдите в Свойства -> Линковка -> Вход -> Дополнительные зависимости и добавьте winmm.lib. Это решит ошибку LNK1120 и связанные с ними LNK2019. Также убедитесь, что у вас подключены правильные заголовки и SDK для работы с мультимедиа.