Please be advised that the Audiokinetic offices will close at 3:00 p.m. EST on December 22nd, 2017 for the holiday period, and will reopen on Wednesday January 3rd, 2018 at 09:00 a.m. EST. Learn more.

Community Q&A

Where Wwise users help each other out!

Audiokinetic's Community Q&A is the forum where Wwise users ask and answer questions within the Wwise community. Contact Sales if your project requires a support plan.

Unresolved External int MemoryMgr::Init (VS C++) [closed]

+1 vote
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.
closed with the note: Problem solved
asked Dec 6 in General Discussion by Carlos C. (110 points)
closed Dec 9 by Carlos C.

1 Answer

0 votes
Maybe you should check the path of the headers that the library is including in its own files.
answered Dec 7 by Roger B. (150 points)
...