我跑..GCC未定義參考
gcc -c -I/usr/vt/sample ttssample.c
gcc -L. -lttsapi ttssample.o -o ttsample
,我發現了以下錯誤......
ttssample.o: In function `_TTSFile':
ttssample.c:(.text+0x352): undefined reference to `TTSRequestFile'
ttssample.o: In function `_TTSFileEx':
ttssample.c:(.text+0x5e0): undefined reference to `TTSRequestFileEx'
ttssample.o: In function `_TTSBuffer':
ttssample.c:(.text+0x833): undefined reference to `_TTSRequestBuffer'
ttssample.o: In function `_TTSBufferEx':
ttssample.c:(.text+0xabd): undefined reference to `_TTSRequestBufferEx'
ttssample.o: In function `_TTSBuffering_cont':
ttssample.c:(.text+0xcbf): undefined reference to `_TTSRequestBuffer'
ttssample.o: In function `_TTSBuffering_stop':
ttssample.c:(.text+0xf2d): undefined reference to `_TTSRequestBuffer'
ttssample.o: In function `_TTSBuffering_SSML':
ttssample.c:(.text+0x122b): undefined reference to `_TTSRequestBufferSSMLEx'
ttssample.o: In function `_TTSStatus':
ttssample.c:(.text+0x157b): undefined reference to `TTSRequestStatus'
collect2: ld returned 1 exit status
和TTSRequestFile是在lib頭,但它有DLLEXPORT上我想知道的正面是我錯誤的原因?任何幫助非常感謝。
DllExport int TTSRequestFile(char *szServer, int nPort, char *pText, int nTextLen, char *szSaveDir, char *szSaveFile, int nSpeakerID, int nVoiceFormat);
它的工作謝謝你! – JLB
任何想法爲什麼這會錯誤運行可執行文件?加載共享庫時出錯:-melf_x86_64:無法打開共享目標文件:無此文件或目錄 – JLB
@JLB因爲庫不在默認情況下由運行時加載程序搜索的目錄中。您需要將該庫放入搜索的目錄(如/ usr/local/lib),或者導出LD_LIBRARY_PATH環境變量以包含庫駐留的目錄(如LD_LIBRARY_PATH =「/ home/me/mylib」),或者你可以使用一個指向lib所在目錄的rpath來鏈接你的程序,或者使用rpath的$ ORIGIN特性來總是在一個目錄中尋找一個相對於可執行文件相對路徑的lib。搜索Google「rpath origin」以查找更多信息。 –