0
Сжатие OpenJtalk в Go, файлы успешно включены и типы ссылаются без проблем, но функции запускают ошибку undefined reference
.CGO undefined reference in included files
jtalk.go:
package main
// #cgo CFLAGS: -I/home/vagrant/open_jtalk/njd [...etc]
/*
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
// Main headers
#include "mecab.h"
#include "njd.h"
#include "jpcommon.h"
#include "HTS_engine.h"
// Sub headers
#include "text2mecab.h"
#include "mecab2njd.h"
#include "njd_set_pronunciation.h"
#include "njd_set_digit.h"
#include "njd_set_accent_phrase.h"
#include "njd_set_accent_type.h"
#include "njd_set_unvoiced_vowel.h"
#include "njd_set_long_vowel.h"
#include "njd2jpcommon.h"
*/
import "C"
type Open_JTalk struct {
mecab C.Mecab each of these struct references are fine
njd C.NJD
jpcommon C.JPCommon
engine C.HTS_Engine
}
func (open_jtalk *Open_JTalk) Open_JTalk_initialize() {
C.Mecab_initialize(&open_jtalk.mecab) // when any function is called the error happens
C.NJD_initialize(&open_jtalk.njd)
C.JPCommon_initialize(&open_jtalk.jpcommon)
C.HTS_Engine_initialize(&open_jtalk.engine)
}
func main() {
}
И странная часть в том, что те же самые функции объявлены сразу после типов:
mecab.h
// line 1584
typedef struct _Mecab{
char **feature;
int size;
mecab_t *mecab;
} Mecab;
BOOL Mecab_initialize(Mecab *m);
проекта веб-страница: http://open-jtalk.sourceforge.net/
Alternaively (если таковые имеются): '// #cgo PKG-конфигурации: onelib anotherlib' – jimt
Это работает для всех минус' -L/дома/бродяга/open_jtalk/MeCab/ЦСИ -llibmecab': **/usr/bin/ld: не удается найти -llibmecab **. И у меня есть ** libmecab ** в этой папке и в '/ usr/local/lib /', как статические, так и динамические. – localhost
Как насчет -lmecab (удалить lib)? –