Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >葛朗: cgo外挂不起作用

葛朗: cgo外挂不起作用
EN

Stack Overflow用户
提问于 2013-12-10 22:46:32
回答 1查看 3.5K关注 0票数 3

我试图用下面的示例(在go-wiki -> Global Functions上给出)来运行golang的cgo:

foo.go文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package gocallback

import "fmt"

/*
#include <stdio.h>
extern void ACFunction();
*/
import "C"

//export AGoFunction
func AGoFunction() {
        fmt.Println("AGoFunction()")
}

func Example() {
        C.ACFunction()
}

foo.c文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "_cgo_export.h"
void ACFunction() {
    printf("ACFunction()\n");
    AGoFunction();
}

在运行此示例时,我得到以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# command-line-arguments
/tmp/go-build770916112/command-line-arguments/_obj/foo.cgo2.o: In function    `_cgo_3234419c4c2a_Cfunc_ACFunction':
./foo.go:36: undefined reference to `ACFunction'
collect2: ld returned 1 exit status

我无法追踪这件事。为什么ACFunctionundefined?还是我漏掉了什么?

go version:go版本go1.1.2linux/386

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 00:36:30

根据问题的注释,您似乎正在尝试用go run foo.go构建和运行程序。

如果出现go run: cannot run non-main package错误,这将失败,但是将包名转换为main并添加main函数确实会在问题中再现错误。这似乎是因为它试图只编译foo.go文件,而不是附带的foo.c文件。

如果您将文件放在$GOPATH/src下的目录中,并使用go build packagename构建程序,那么它应该会成功地构建包中的所有源文件。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20512353

复制
相关文章
CGO 和 CGO 性能之谜
当我们最开始准备了解 go,并且认识到 golang 在一些场合不可避免的缺乏性能优势的时候(和 c/c++比较),很多人第一想法是:我为什么不从 go 语言中调用 c 呢,就像在 lua/python 里面做的那样。
王磊-字节跳动
2020/06/24
12.4K0
浅谈CGO
C 语言作为最古老的一门编程语言之一,其具有大量的高性能的函数库,很多语言都提供了C 语言的调用接口,GO 作为新时代的开拓者,同时也应该站在巨人的肩膀上, CGO 就是一个提供 GO 和 C 相互调用的桥梁工具。
机械视角
2019/10/23
5740
CGO文章整理
虽然CGO属于不太常用的技术,但是偶尔在一些场景中还是会用到的,本文搜集了一些CGO的文章, 方便大家学习和参考。
李海彬
2018/08/16
9660
CGO文章整理
实战CGO
某项目要集成 PDF 文件的 OCR 功能,不过由于此功能技术难度太大,网络上找不到靠谱的开源实现,最终不得不选择 ABBYY FineReader Engine 的付费服务。可惜 ABBYY 只提供了 C++ 和 Java 两种编程语言的 SDK,而我们的项目采用的编程语言是 Golang,此时通常的集成方法是使用 C++ 或 Java 实现一个服务,然后在 Golang 项目里通过 RPC 调用服务,不过如此一来明显增加了系统的复杂度,好在 Golang 支持 CGO,让我们可以很方便的在 Golang 中使用 C 模块,本文总结了我在学习 CGO 过程中的心得体会。
LA0WAN9
2021/12/14
8410
实战CGO
CGO 文章
官方文章 cmd/cgo: cgo命令行工具 wiki/cgo: 简介 C? Go? Cgo!: 古老的文章 WindowsDLLs: 不是CGO 通过cgo调用C代码: Go语言圣经中的介绍 相关文
golangLeetcode
2022/08/02
5660
初识 CGO - 利用 CGO 使用 C++ STL
之前我也了解过 CGO 相关的知识,但是当时给我的印象全部都是 “CGO 性能差” “完全没有必要,实际根本用不到”,但是这次听了大佬的一些分享发现 CGO 其实就是黑科技啊,有了它你在使用 go 的时候有了更多的想象力。本文将带你初步了解和使用 CGO,本文只是抛砖头,因为有关 CGO 的文档其实蛮少的,在其中也有很多坑,所以今天来踩一次,不知道会不会留下什么坑….
LinkinStar
2022/09/01
6940
初识 CGO - 利用 CGO 使用 C++ STL
golang源码分析(36)cgo
GO调C基本原理CGO是实现Go与C互操作的方式,包括Go调C和C调Go两个过程。其中Go调C的过程比较简单。对于一个在C中定义的函数add3,在Go中调用时需要显式的使用C.add3调用。其中C是在程序中引入的一个伪包
golangLeetcode
2022/08/02
1.4K0
golang 使用cgo访问mysql
CGO是Go语言提供的一种机制,允许开发人员在Go代码中调用C语言函数,也可以将Go代码编译成共享库供C程序调用。CGO的全称是"C Go",意思是Go语言和C语言之间的交互。
运维开发王义杰
2023/08/21
3000
golang 使用cgo访问mysql
Java - 游戏内存外挂
什么是游戏外挂? 试想场景,在玩游戏时,没有得到良好的游戏体验,加之玩游戏的这位又是偏激之人,此时心生愤怒,但通过自己的游戏技术,又无法得到发泄。所以很无奈,只能打开一种游戏作弊程序,这种游戏作弊程序就叫做游戏外挂。
Melody132
2020/03/11
6.6K1
CGO的奇怪操作 持续更新
cgo 中 go 往 c 传递数组时, 直接传递数组会报错, 正确的传递方式是传递 数组中第1个元素的地址.
mousemin
2023/06/10
1490
cgo sqlite3 arm交叉编译
从 arm-linux-gnu-gcc -v 中看到 sysroot目录 /usr/arm-linux-gnu/sys-root/ 为空。 从 yum search 中,也没找到对应的包。看来只能手工去下载编译用的head文件和库文件。
随心助手
2021/07/23
2K0
VLC 外挂字幕乱码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157347.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
9690
VLC 外挂字幕乱码
MySQL kill会话不起作用?
在一次日常测试中发现,kill 一个会话后,SQL语句依然在运行并没终止;被kill的会话重新连接并继续执行原来的SQL语句。
老叶茶馆
2023/09/01
2490
MySQL kill会话不起作用?
C语言游戏外挂:一个简单的内存外挂
通过 C 语言编写一个简单的外挂,通过 API 函数修改游戏数据,从而实现作弊功能
小林C语言
2019/06/10
4.5K0
C语言游戏外挂:一个简单的内存外挂
通过 C 语言编写一个简单的外挂,通过 API 函数修改游戏数据,从而实现作弊功能
诸葛青云
2019/05/08
2.8K0
C语言游戏外挂:一个简单的内存外挂
Hexo tag 外挂标签
样式展示链接 基于 Butterfly 主题魔改的样式查阅 这里仅包括: 自定义标签、 文本段落、 复选框、 富文本按钮、 Folding、 密码样式的文本、 时间线 、 Link。
花猪
2022/02/22
1.7K0
MySQL kill会话不起作用?
在一次日常测试中发现,kill 一个会话后,SQL语句依然在运行并没终止;被kill的会话重新连接并继续执行原来的SQL语句。
GreatSQL社区
2023/08/10
3940
MySQL kill会话不起作用?
普通外挂弱爆了!那些防不胜防的“物理外挂”
来源:PConline 作者:Aimo 除了普通的软件外挂,还有一种更加隐秘的“开挂”,那就是利用硬件的“物理开挂”。和软件开挂相比,用硬件在游戏中占尽优势,更加令人防不胜防。那么到底有哪些经典的
顶级程序员
2018/05/03
2.3K0
普通外挂弱爆了!那些防不胜防的“物理外挂”
cgo笔记: 内存分配与对象转换
来自:https://www.reddit.com/r/golang/comments/iqy423/cgo_golang_free_allocated_memory_of_array_of_c/
超级大猪
2023/03/14
9250
点击加载更多

相似问题

高朗(Cgo)-不确定C.quit的名称

14

类型成绩单测试,卡玛,茉莉花和葛朗特

22

Golang + cgo - AppDelegate实现不起作用

12

戈朗:如果没有win32,我怎么能调用cgo呢?

10

葛林特不在值班工作。

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文