2017-10-31 34 views
2

espeak-ng 1.1.49./configure make make installをダウンロードして、それをespeak --stdout "this is a test" | paplayで正常にテストしたところ、正常に動作しました。私はこれらのエラーメッセージを得たg++ testSpeak.cpp -o speaksUbuntuのespeak-ngヘッダーへの参照がありません

#include <string.h> 
#include <vector> 
#include </usr/local/include/espeak-ng/speak_lib.h> 

int samplerate; // determined by espeak, will be in Hertz (Hz) 
const int buflength = 200; // passed to espeak, in milliseconds (ms) 

std::vector<short> sounddata; 

int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) { 
    if (wav == NULL) 
     return 1; // NULL means done. 

    /* process your samples here, let's just gather them */ 
    sounddata.insert(sounddata.end(), wav, wav + numsamples); 
    return 0; // 0 continues synthesis, 1 aborts 
} 

int main(int argc, char* argv[]) { 
    char text[] = {"my name is espeak"}; 
    samplerate = espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, buflength, NULL, 0); 
    espeak_SetSynthCallback(&SynthCallback); 
    espeak_SetVoiceByName("en"); 
    unsigned int flags=espeakCHARS_AUTO | espeakENDPAUSE; 
    size_t size = strlen(text); 
    espeak_Synth(text, size + 1, 0, POS_CHARACTER, 0, flags, NULL, NULL); 
    espeak_Synchronize(); 

    /* in theory sounddata holds your samples now... */ 

    return 0; 
} 

しかし、このコマンドで実行可能にしようとした後:そして、私はあなたが以下を参照できるように私がインターネットで見つけ、私のC++コード(testSpeak.cpp)の内側にそれを使用しようとしました:

/tmp/ccR9O0vw.o: In function `main': 
testSpeak.cpp:(.text+0x78): undefined reference to `espeak_Initialize' 
testSpeak.cpp:(.text+0x90): undefined reference to `espeak_SetSynthCallback' 
testSpeak.cpp:(.text+0x9c): undefined reference to `espeak_SetVoiceByName' 
testSpeak.cpp:(.text+0xce): undefined reference to `espeak_Synth' 
testSpeak.cpp:(.text+0xd2): undefined reference to `espeak_Synchronize' 
collect2: error: ld returned 1 exit status 

私は問題について知っていますが、私はLinuxに新しいので、どうすれば修正できるのでしょうか。また、私は多くのことを探索したが解決策を理解できませんでした:(

答えて

2

私はそれはあなたには、

sudo apt-get install espeak-data libespeak-dev espeak-ng 

#include </usr/local/include/espeak-ng/speak_lib.h> 

それ

#include <espeak-ng/speak_lib.h> 
作りでインストールしてみ正しくコンパイルするようになりました

コンパイルコマンドは

です
g++ testSpeak.cpp -o speaks 

私はそれは厳しい試したコンパイルされないでしょうし、それはおそらく古いバージョンが、あなたが提供するコードと、それらのプログラムのインストールを仕事とあなたを変更していないから参照

g++ -W -o speaks myEspeak.cpp -lespeak 

代わりにこれを試してみてくださいあなたのコードをコンパイルすることができます。私はそれを.wavファイルに保存する方法を見つけることはあまりありません。 https://stackoverflow.com/questions:あなたが共有ライブラリからコンパイル今まで

http://apexlogic.net/code-bank/c-2/espeak-basic-usage-example/ 

をするとき、あなたは

-lespeak 
+0

こんにちは親愛なる、私はここに新しいプログラムに直面したようなもので、それをリンクする必要があります/ 47400061/speaks-error-while-loading-shared-libraries-libespeak-ng-so-1-can not-open-s。助けてもらえますか? – user145959

関連する問題