当前位置: 首页 > 面试题库 >

包含文件中的CGO未定义参考

徐承载
2023-03-14
问题内容

在Go中结束OpenJtalk,成功包含了文件,并且引用类型没有问题,但是函数触发undefined reference错误。

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/


问题答案:

您需要添加cgo链接器选项(LDFLAGS)以及库的路径和名称。例如

// #cgo CFLAGS: -Iyour-include-path
// #cgo LDFLAGS: -Lyour-library-path -lyour-library-name-minus-the-lib-part


 类似资料:
  • 本文向大家介绍TypeScript 在npm上将定义文件包含在库中,包括了TypeScript 在npm上将定义文件包含在库中的使用技巧和注意事项,需要的朋友参考一下 示例 将类型添加到您的package.json 现在,无论何时导入该库,打字稿都将加载打字文件

  • 转换为fxml 我总是从javafx.fxml.loadException类型中得到错误代码:也许有比创建自定义类更好的解决方案。但我需要一个标签与自定义接口(连接)。也许另一个解决方案是创建一个只包含标签的fxml文件,并通过接口为此设置一个控制器类。 编辑:

  • 如何在自定义. php文件中包含WordPress函数? 详细说明:我的主题(构造函数)下有一个名为reports的目录。这些包含。php文件,该文件使用DOMPDF从站点的数据生成报告以供下载。对于这些,我想使用WordPress引擎提供的函数,例如。如果我使用这些,我(自然)会得到以下错误: 致命错误:在ROOT/public\u html/wp content/themes/construc

  • 问题内容: 如何在自定义.php文件中包含WordPress函数? 详细信息:我在主题(构造函数)下有一个名为reports的目录。这些文件包含.php文件,这些文件使用DOMPDF从站点数据生成报告以供下载。对于这些,我想使用WordPress引擎提供的功能,例如。如果我使用这些,我(自然)会收到以下错误: 致命错误:在第15行的ROOT / public_html / wp-content /

  • 问题内容: 为什么node.js无法识别document.GetElementById?它说“ ReferenceError:未定义文档”。我能做什么? 问题答案: 与Web浏览器中的DOM(文档对象模型)相关。 但是,Node.js不是浏览器Javascript。它是一台服务器,非常类似于PHP或Perl,因此,您无法访问浏览器的DOM或执行任何特定于基于浏览器的Javascript的操作。 您

  • 我正在用Visual Studio(2017)构建pybind11项目。安装文件如下: 然后在windows power shell中,我将运行 python设置。皮包 但是它抱怨找不到多个包含文件,我相信它以后也会抱怨缺少库文件: 我知道这个目标在哪里。h是,只是不知道如何将其位置添加到包含路径。 非常感谢你的帮助。