包含文件中的 CGO 未定义引用

2024-02-15

在 Go 中包装 OpenJtalk,成功包含文件并引用类型,没有出现问题,但函数会触发undefined reference error.

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/ http://open-jtalk.sourceforge.net/


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

// #cgo CFLAGS: -Iyour-include-path
// #cgo LDFLAGS: -Lyour-library-path -lyour-library-name-minus-the-lib-part
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包含文件中的 CGO 未定义引用 的相关文章

随机推荐

  • 代号一个应用程序中的额外侧边菜单

    在我的应用程序中 我有一个右侧菜单 但似乎还有一个左侧菜单 仅包含后退按钮 没有菜单按钮 带有三条水平线 但如果触摸屏幕左边缘并拖动 则会出现菜单 我不明白为什么要创建它 但是有什么方法可以禁用或删除它吗 None
  • 在 PHP 中查找多个字符串位置

    我正在编写一个解析给定 URL 的 PHP 页面 我能做的就是仅找到第一个出现的值 但是当我回显它时 我得到另一个值而不是给定的值 这就是我到目前为止所做的 我知道可以使用循环 但我不知道循环体的条件 我怎
  • 在从 PHP 发送的电子邮件中使用 HTML 格式

    如何通过 PHP 脚本发送 HTML 格式 由于某种原因 它总是显示为 b Example b 代替Example 我确信我必须在某个地方包含 HTML 标头 我只是不知道需要做什么 我是一个十足的 PHP 菜鸟 这是我的 PHP 脚本 相
  • Jupyter笔记本导入错误:没有名为tornado.log的模块

    我已经安装了 jupyter 当尝试启动它时 出现以下错误 File Library Frameworks Python framework Versions 2 7 bin jupyter notebook line 7 in
  • 防病毒软件说我的程序可疑

    我在 wpf Visual Studios 中构建了一个程序 当我运行它时 avast 说检测到可疑程序 然后关闭我的程序 我可以采取任何措施来验证它 还是必须进入 avast 并将其设置为不阻止我的程序 您当然可以在大多数主要防病毒软件包
  • 获取 json 数组的下一个和上一个元素

    我的代码需要帮助 我想要一个上一个和一个下一个按钮 这些按钮将调用函数 viewBlogItem direction cat blogid 在该函数中 我将读出 json 文件 并按 类别 进行分类 每个 blogItem 都有一个arti
  • 机器码对齐

    我正在尝试了解机器代码对齐的原理 我有一个汇编器实现 可以在运行时生成机器代码 我在每个分支目标上使用 16 字节对齐 但看起来这不是最佳选择 因为我注意到 如果我删除对齐 有时相同的代码会运行得更快 我认为这与缓存线宽度有关 因此某些命令
  • 使用C#播放MP3文件

    我正在寻找一种无需任何第三方播放 MP3 文件的方法 媒体播放器等 有什么方法可以做到这一点吗 谢谢 我写了一个开源库 名为NAudio http naudio codeplex com可以做到这一点 private IWavePlayer
  • boost::graph 中的 DFS 更改图形内容

    最小的例子 include
  • 是否可以禁用应用程序而不隐藏它们?

    背景 最终用户可以通过操作系统内置的应用程序管理器禁用某些应用程序 该屏幕看起来像这样 在某些设备上它显示 关闭 一旦禁用应用程序 它就不会处于活动状态 并且不会以任何方式运行 直到您再次重新启用它 不过 为了重新启用它 您仍然可以在应用程
  • 即使具有 INTERNET 权限,连接到页面时仍显示“权限被拒绝”

    从 Android 连接到任何页面时 我收到此异常 06 09 12 50 42 725 WARN System err 1080 java net SocketException Permission denied 06 09 12 50
  • python的sphinx中var、cvar和ivar有什么区别?

    我正在阅读 sphinx 文档页面 讽刺的是发现关于 var ivar 和 cvar 之间差异的文档非常缺乏 我想知道是否有人可以解释内联代码中每个不同名称空间之间的区别 Example class foo object var str f
  • 替换/删除与正则表达式 (.NET) 不匹配的字符

    我有一个正则表达式来验证字符串 但现在我想删除所有与我的正则表达式不匹配的字符 E g regExpression w text This is a sample text with some invalid characters Remo
  • 为什么我的 IdentityRoles 和 ApplicationUsers 没有填充到我的数据库中?

    我在 net core 3 1 Web 应用程序中播种用户时遇到问题 正在 SQL Server 上创建相应的表 但当我运行应用程序时没有创建任何行 我不知道为什么数据库没有被填充 有人能发现这个问题吗 DBInitializer 文件将用
  • 如何通过路径访问多维数组元素? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 使用字符串作为数组索引路径来检索值 https stackoverflow com questions 1677099 php use a string as an array index p
  • 从信号器 js 客户端向集线器功能传递连接令牌是安全的还是黑客的

    我读了这篇文章http www asp net signalr overview security introduction to security connectiontoken http www asp net signalr over
  • VisualVM 校准步骤在 Windows 10 中挂起

    情况 我已在 Windows 10 周年纪念版上安装了 VisualVM 1 3 8 并且没有使用 JDK 8 附带的版本 我想用它来分析 Java Play 应用程序 会发生什么 当启动 CPU 分析时 它首先询问我需要校准 当发生这种情
  • 在数据表列中查找最长的字符串

    我想知道是否可以创建一个 单行 Linq 来检索特定数据表列的最长字符串值 这意味着所有列数据 数字 日期 字符串 都应转换为字符串 然后返回最长的字符串 我发现的只是如何从列表中获取最长的字符串或最大长度值 这是我到目前为止所尝试的 长度
  • 点击列表视图、视图单元格内的其他按钮即可更改按钮的图像

    我有一个listview This list view有 5 行 其中有 2 行buttons namely A B 当我点击button A on a row 我想改变图像A也B在同一行 反之亦然 我可以单独点击并更改同一图像button
  • 包含文件中的 CGO 未定义引用

    在 Go 中包装 OpenJtalk 成功包含文件并引用类型 没有出现问题 但函数会触发undefined reference error jtalk go package main cgo CFLAGS I home vagrant op