# \[Linker error\] undefined reference to \`CLSID\_SpVoice'

**URL:** <https://forum.kirupa.com/t/linker-error-undefined-reference-to-clsid-spvoice/308596>\
**Category:** programming\
**Created:** [April 26, 2010, 5:55pm UTC](https://forum.kirupa.com/t/linker-error-undefined-reference-to-clsid-spvoice/308596 "2010-04-26T17:55:52Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![NathanZachary](https://avatars.discourse-cdn.com/v4/letter/n/f475e1/32.png) [@NathanZachary](https://forum.kirupa.com/u/NathanZachary)\
**Post date:** [April 26, 2010, 5:55pm UTC](https://forum.kirupa.com/t/linker-error-undefined-reference-to-clsid-spvoice/308596/1 "2010-04-26T17:55:52Z")

</div>

After having spent the last few hours in deep frustration over Microsoft’s SAPI, I have finally made the decision to seek professional help. Google has failed me epically on this one, and so Kirupa C++ seems the way to go 😉

My code (not actually mine, but an elegant mix of the code found on the MSDN SAPI 5.3 Tutorial, and [http://www.gamedev.net/reference/articles/article1904.asp](http://www.gamedev.net/reference/articles/article1904.asp)), looks like so:

```auto

// SAPI Sample 1.cpp : Defines the entry point for the console application.

#include <windows.h>
#include <Servprov.h>
#include <sapi.h>

int main ( int NumOfArguments, char** Argument )
{
    ISpVoice* Voice = NULL; // The voice interface
    // Initialize COM
    CoInitialize ( NULL );

    // Create the voice interface object
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&Voice);
    
if( SUCCEEDED( hr ) )
    {
        hr = Voice->Speak(L"Hello world", 0, NULL);

        // Change pitch
        hr = Voice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL );
        Voice->Release();
        Voice = NULL;
    }
    // Shutdown COM
    CoUninitialize ();

    return 0;
}

```

Since this is my first TTS Application, I wanted to start out simple, and just get things to work.

Nonetheless, compiling this code gives me the following errors:

> [Linker error] undefined reference to `IID_ISpVoice' [Linker error] undefined reference to `CLSID\_SpVoice’  
> ld returned 1 exit status  
> D:\DevCpp\Dev-Cpp\Makefile.win [Build Error] [Attempt4.exe] Error 1  
> I am using Dev-C++ version 4.9.9.2 with a MingGW compiler.

I have added the SAPI Include directory to the Compiler Options, such that \<sapi.h\> is avaiable.

Since sapi.lib works badly with Dev-C++, I used the dlltool to create a libsapi.a from the sapi.dll file, I placed the .a file in the ‘lib’ folder of Dev-C++.

I then, under Project Settings, added the additional parameters to the linker “-lsapi” and “-lole32”.

Still, there seems to be a linker error? Did I forget about a header that defines CLSID\_SpVoice and IID\_ISpVoice? Hope someone can help 🙂
