Cannot open file: ../sysdeps/posix/system.c

926 Views Asked by At

I am trying to pas some strings to espeak and it will say them by this code:

#include <string.h>
#include <malloc.h>
#include <espeak/speak_lib.h>
#include <iostream>

#include <stdlib.h>
#include <unistd.h>
//#include <cstring>
using namespace std;
int main()
{



    espeak_POSITION_TYPE position_type;
    espeak_AUDIO_OUTPUT output;
    char *path=NULL;
    int Buflength = 500, Options=0;
    void* user_data;
    t_espeak_callback *SynthCallback;
    espeak_PARAMETER Parm;



    char Voice[] = {"English"};

    int i=0;

    char text[11][200] {"hi ",
                        "This is...",
                        "you can ... ",
                        "I am ,,,, " ,
                        "you can ... ",
                        "hope you ... ",
                        "come in ... ",
                        "if you ... ",
                        "you will... ",
                        "I hope ... ",
                        "Take care "
                       };



    unsigned int Size,position=0, end_position=0, flags=espeakCHARS_AUTO, *unique_identifier;


    output = AUDIO_OUTPUT_PLAYBACK;

    espeak_Initialize(output, Buflength, path, Options );
    espeak_SetVoiceByName(Voice);
    const char *langNativeString = "en_US";
    espeak_VOICE voice= {0};

    voice.languages = langNativeString;
    voice.name = "US";
    voice.variant = 2;
    voice.gender = 1;
    //  Size = strlen(text)+1;


    for (;;)
    {



        for(i=0; i<11; i++)
        {
            Size = sizeof(text[i]);
            system("eog --fullscreen --disable-gallery --single-window 1.jpg &");
            usleep(3000000);

            espeak_Synth( text[i], Size, position, position_type, end_position, flags,
                          unique_identifier, user_data );
            espeak_Synchronize( );
            system("eog --fullscreen --disable-gallery --single-window 1.jpg &");
            usleep(3000000);

        }
//fflush(stdout);

    }

    return 0;
}

But I get segmentation fault(core dumped) error. I tried to debugging the code and this is the error : Cannot open file: ../sysdeps/posix/system.c that occurs in this line of code: system("eog --fullscreen --disable-gallery --single-window 1.jpg &"); . How can I fix this?

2

There are 2 best solutions below

2
On

I did transport this part of code to outside of the main() function, and it works now without errors:

espeak_POSITION_TYPE position_type;
espeak_AUDIO_OUTPUT output;
char *path=NULL;
int Buflength = 500, Options=0;
void* user_data;
t_espeak_callback *SynthCallback;
espeak_PARAMETER Parm;



char Voice[] = {"English"};

int i=0;
unsigned int Size,position=0, end_position=0, flags=espeakCHARS_AUTO, *unique_identifier;
2
On

You think to have 11 arrays(sentences) but you actually have only 10. These two

          "I am glad too meet you here "
          "you can see many science and technology products here ",

are actually just one since you miss the comma at the end