커뮤니티 Q&A

Audiokinetic의 커뮤니티 Q&A 포럼에 오신 것을 환영합니다. 이 포럼은 Wwise와 Strata 사용자들이 서로 도움을 주는 곳입니다. Audiokinetic의 직접적인 도움을 얻으려면 지원 티켓 페이지를 사용하세요. 버그를 보고하려면 Audiokinetic 런처에서 Bug Report 옵션을 사용하세요. (Q&A 포럼에 제출된 버그 보고는 거절됩니다. 전용 Bug Report 시스템을 사용하면 보고 내용이 담당자에게 정확히 전달되어 문제 해결 가능성이 크게 높아집니다.)<segment 6493>

빠르고 정확한 답변을 얻으려면 질문을 올릴 때 다음 팁을 참고하세요.

  • 구체적인 내용을 적어주세요: 무엇을 하려는지, 혹은 어떤 특정 문제에 부딪혔는지 설명하세요.
  • 핵심 정보를 포함하세요: Wwise와 게임 엔진 버전, 운영체제 등 관련 정보를 함께 제공하세요.
  • 시도한 방법들을 알려주세요: 문제 해결을 위해 이미 어떤 단계를 시도해봤는지 설명해주세요.
  • 객관적인 사실에 초점을 맞추세요: 문제의 기술적 사실을 중심으로 설명하세요. 문제에 집중할수록 다른 사람들이 더 빠르게 해결책을 찾을 수 있습니다.

+1 투표
Hello. I'm a new Wwise user, and I'm trying to integrate Wwise in a C++ game engine project of my own.

I started following the documentation in the webpage, but I've encountered a problem I can't solve by myself.

When I tried to call AK::MemoryMgr::Init to initialize the Memory Manager, 147 errors appears on the output console. Most of them, unresolved externals from AkMemoryMgr.lib, or AkSoundEngine.lib.

I guess that there is some library missing in my includes, but I re-read carefully the documentation, and I can't found what exactly is causing all of these errors.

Also, I checked the Integration Demo, and I have the same exact includes.

Possibly, the include order is wrong, or I have skipped some configuration in my VS project. Whatever it is, I can't find it by myself.

I'm using Visual Studio 2017. I have made a separate file for the includes, and another for the audio module I will use.

The include_wwise.h:

-------------------------------------------------

#ifndef _INCLUDE_WWISE_H_
#define _INCLUDE_WWISE_H_

#include <AK/SoundEngine/Common/AkTypes.h>
#include <AK/SoundEngine/Common/AkSoundEngine.h>     
#include <AK/MusicEngine/Common/AkMusicEngine.h>     
#include <AK/SoundEngine/Common/AkMemoryMgr.h>       
#include <AK/SoundEngine/Common/AkModule.h>        
#include <AK/SoundEngine/Common/AkStreamMgrModule.h>
#include <AK/Tools/Common/AkPlatformFuncs.h>

//#define AK_OPTIMIZED

#ifdef AK_OPTIMIZED

    #pragma comment( lib, "3DEngine/Audiokinetic/Release/lib/AkSoundEngine.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Release/lib/AkMusicEngine.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Release/lib/AkMemoryMgr.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Release/lib/AkStreamMgr.lib")

#else

    #pragma comment( lib, "3DEngine/Audiokinetic/Debug/lib/AkSoundEngine.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Debug/lib/AkMusicEngine.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Debug/lib/AkMemoryMgr.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/Debug/lib/AkStreamMgr.lib")

#endif

#pragma comment( lib, "3DEngine/Audiokinetic/dinput8.lib")
#pragma comment( lib, "3DEngine/Audiokinetic/dsound.lib")
#pragma comment( lib, "3DEngine/Audiokinetic/dxguid.lib")

#ifndef AK_OPTIMIZED
    #include <AK/Comm/AkCommunication.h>
    #pragma comment( lib, "3DEngine/Audiokinetic/Debug/lib/CommunicationCentral.lib")
    #pragma comment( lib, "3DEngine/Audiokinetic/ws2_32.lib")
#endif

namespace AK
{
#ifdef WIN32
    void * AllocHook(size_t in_size);
    void FreeHook(void * in_ptr);
    void * VirtualAllocHook(void * in_pMemAddress, size_t in_size, DWORD in_dwAllocationType, DWORD in_dwProtect);
    void VirtualFreeHook(void * in_pMemAddress, size_t in_size, DWORD in_dwFreeType);
#endif
}

#endif

 

 

The include_wwise.cpp:

-------------------------------------------

#include "include_wwise.h"

namespace AK
{
    void * AllocHook(size_t in_size)
    {
        return malloc(in_size);
    }

    void FreeHook(void * in_ptr)
    {
        free(in_ptr);
    }

    void * VirtualAllocHook(
        void * in_pMemAddress,
        size_t in_size,
        DWORD in_dwAllocationType,
        DWORD in_dwProtect
    )
    {
        return VirtualAlloc(in_pMemAddress, in_size, in_dwAllocationType, in_dwProtect);
    }
    void VirtualFreeHook(
        void * in_pMemAddress,
        size_t in_size,
        DWORD in_dwFreeType
    )
    {
        VirtualFree(in_pMemAddress, in_size, in_dwFreeType);
    }
}

 

My own module .h:

------------------------------------------------------

#ifndef _WISHED_H_
#define _WISHED_H_
namespace Wwished
{
    bool InitWwished();
}

#endif

 

 

My own module .cpp:

------------------------------------------------------

#include "wwished.h"
#include "include_wwise.h"
#include <assert.h>

bool Wwished::InitWwished()
{
    bool ret = true;

    //Init default Wwise memory manager
    AkMemSettings memSettings;
    memSettings.uMaxNumPools = 20;
    if (AK::MemoryMgr::Init(&memSettings) != AK_Success)
    {
        assert(!"Could not create the memory manager.");
        return false;
    }

    return ret;
}

 

Any help will be welcome.

Thanks.
폐쇄 기록: Problem solved
General Discussion Carlos C. (110 포인트) 로 부터
완료 Carlos C. 로 부터

1 답변

0 투표
Maybe you should check the path of the headers that the library is including in its own files.
Roger B. (150 포인트) 로 부터
...