ошибка LNK2019 при использовании ALUT

Используя Visual Studio 10, мне не удалось скомпилировать примеры кода, предоставленные openal

http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx

Я установил OpenAL11CoreSDK, выполнив oalinst.exe, также загрузил freealut-1.1.0-bin
Я скопировал все файлы из "OpenAL 1.1 SDK\include" в "Microsoft Visual Studio 10.0\VC\include\AL", а также alut.h внутри freealut-1.1.0-bin
> Я поместил alut.lib и OpenAL32.lib в "Microsoft Visual Studio 10.0\VC\libs" Я поместил alut.dll и OpenAL32.dll в "C:\Windows\SysWOW64" и "C:\Windows\System32"
Я включил путь "Microsoft Visual Studio 10.0\VC\include\AL" в "Проект->Свойства->Каталоги VC++->Включить каталоги" и "C/C++ ->Общие->Дополнительные каталоги включения"
"VC\lib" в "Каталогах библиотек" и "Linker->Общие->Дополнительные каталоги библиотек" путь к "alut.lib" и "OpenAL.lib" в "Linker->Ввод->Дополнительные зависимости"

Я думаю, что я связал все библиотеки, но я все еще получаю ошибки компоновщика:

1>test.obj : error LNK2019: unresolved external symbol __imp__alSourcePlay referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol __imp__alSourcei referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol __imp__alGenSources referenced in function _main<br>
1>C:\Users\SONY\Documents\Visual Studio 2010\Projects\test\Debug\test.exe : fatal error LNK1120: 3 unresolved externals


#include <stdlib.h>
#include <AL/alut.h>

/*
  This is the 'Hello World' program from the ALUT
  reference manual.

  Link using '-lalut -lopenal -lpthread'.
*/

int
main (int argc, char **argv)
{
  ALuint helloBuffer, helloSource;
  alutInit (&argc, argv);
  helloBuffer = alutCreateBufferHelloWorld ();
  alGenSources (1, &helloSource);
  alSourcei (helloSource, AL_BUFFER, helloBuffer);
  alSourcePlay (helloSource);
  alutSleep (1);
  alutExit ();
  return EXIT_SUCCESS;
}

Я потерялся, что я делаю не так?


person millie    schedule 16.03.2013    source источник
comment
Вы сказали, что использовали OpenAL.lib во входных данных компоновщика, но файл lib alut.lib   -  person thisisdog    schedule 16.03.2013
comment
Это не работает, даже если путь к OpenAL.lib был удален из входных данных компоновщика.   -  person millie    schedule 17.03.2013


Ответы (1)


Чтобы заставить работать OpenAL и ALUT, у трех парней ушло около 5 часов. Я уверен, что мои проблемы отличались от ваших, но я также уверен, что после того, как вы решите эту проблему, вы просто столкнетесь с другой. В отличие от других плакатов, я не собираюсь отвечать на ваш вопрос — я не верю, что есть один, который будет работать для всех.

Шаг 1: Установите oalinst.exe. Это установщик для OpenAL. Нам не удалось заставить OpenAL работать вообще без использования установщика. Эта часть особенно сложна, потому что существует несколько версий с одним и тем же именем файла. Вы хотите самую новую версию, которая есть. На момент написания я использую June 02, 2009. Вы можете найти эти даты, щелкнув файл правой кнопкой мыши и выбрав Properties->Digital Signature.

В нашем случае заказчик устанавливает OpenAL32.dll в System32 и SysWow64; внутри OpenAL CoreSDK также есть OpenAL32.dll — все они разные.

Шаг 2: Убедитесь, что ваша программа максимально упрощена. Ваш привет, мир от OpenAL просто прекрасен.

Шаг 3: Убедитесь, что у вас установлен FreeALUT.

Шаг 4. Проверьте свои зависимости в Visual Studio. Щелкните правой кнопкой мыши проект в Visual Studio (то есть элемент, расположенный прямо под решением в дереве обозревателя решений) и перейдите к

Properties > Configuration Properties > C/C++ > General > Additional Include Directories (more).

STUFF\OpenAL\OpenAL 1.1\include
STUFF\OpenAL\freealut-1.1.0-bin\include
STUFF\OpenAL\OpenAL 1.1\include\AL

Убедитесь, что STUFF соответствует имеющейся у вас структуре каталогов. Избавьте себя от разочарования позже и убедитесь, что введенный вами путь можно скопировать и вставить в проводник Windows, и вы попадете в нужное место.

Итак, Properties > Configuration Properties > Linker > General > Additional Library Directories (more).

STUFF\OpenAL\OpenAL 1.1\libs\Win32
STUFF\OpenAL\freealut-1.1.0-bin\lib

Та же сделка, что и в прошлый раз.

Наконец, Properties > Configuration Properties > Linker > Input > Additional Dependencies.

OpenAL32.lib
alut.lib

.

  1. Обязательно ЗАКРЫТЬ Visual Studio. Сделать Чистым. Ремейк. Пробег. Если вы переключитесь с Debug на Release, помните, что вам нужно будет переделать страницы свойств.

Остальное зависит от тебя. Когда вы создаете выпускную или отладочную версию, alut.dll и alut.lib должны появиться в соответствующей папке Debug или Release.

Не бойтесь просто запустить скомпилированный исполняемый файл без Visual Studio (т. е. просто дважды щелкнув файл hello_world.exe)

person rlb.usa    schedule 04.08.2015