文档章节

windows下go调自己写的c动态库(dll)

徐学良
 徐学良
发布于 2015/12/30 19:40
字数 236
阅读 1233
收藏 6
点赞 0
评论 1

首先编写c文件testdll.c

#include <stdio.h>
int myadd(int a, int b)
{
    return a + b;
}

编译成动态库

gcc -shared testdll.c -o add.dll  得到 add.dll文件

下面就是引用:

package main

import (

    "fmt"

    "syscall"

)

func main() {

    addfile, err := syscall.LoadLibrary("../add.dll") //动态库的路径

    if err != nil {

        fmt.Printf("cgo:err :%v\n", err)

    }

    myaddcall, _ := syscall.GetProcAddress(addfile, "myadd")

    var nargs uintptr = 3

    ret, _, callErr := syscall.Syscall(uintptr(myaddcall), nargs, 5, 3, 0)

    if callErr != 0 {

        fmt.Printf("Call myaddcall: %v\n", callErr)

    }

    fmt.Printf("myadd:%v\n", ret)

}

然后直接go run运行即可


非常感谢知乎和周贤,是他们帮我解决的这个问题,下面是问题链接,有兴趣的可以看下

https://www.zhihu.com/question/39015381

© 著作权归作者所有

共有 人打赏支持
徐学良
粉丝 22
博文 213
码字总数 13841
作品 0
浦东
程序员
加载中

评论(1)

红烧土豆
红烧土豆
42
win64怎么配置glua环境?

想在windows下用go调lua脚本,开发工具用的liteide,在windows下已经安装了lua5.1.4和go,初步打算使用github上大神们封装的glua库(aarzilli/golua · GitHub),那么问题来了,在linux下这个...

徐学良
2016/01/04
289
2
基于Visual C++6.0的DLL编程实现

基于Visual C++6.0的DLL编程实现 一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎...

晨曦之光
2012/03/09
0
0
深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

长平狐
2013/01/06
69
0
关于JNI写的DLL调用实际业务DLL的问题

标红圈的2个文件 是我根据 ClassWizard 加载的功能DLL 生成的 然后在我的DLL的这个CPP里面include进来 我想知道我的这个DLL在实际调的时候 是不是会去加载system32下的 动态库.因为我没有实际...

Chaos_heart
2013/01/22
146
2
深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

晨曦之光
2012/03/02
56
0
[动态库]深入分析Windows和Linux动态库应用异同

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。 ...

龙宝宝
2011/08/05
0
0
LoadRunner使用动态链接库技术

什么是动态库? 动态库一般又叫动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法...

长平狐
2013/03/12
60
0
java native方法及JNI实例

1.参考文献: http://blog.csdn.net/youjianbohan_87/article/details/2586375 http://blog.csdn.net/yangjiali014/article/details/1633017 http://blog.chinaunix.net/space.php?uid=74379......

huang19830104
2017/02/13
0
0
同一平台,不同语言编写的库,相互调用问题

在windows下,有三个库文件: 1,用VS,C 写的first.dll 2,用VS,C#写的 sec.dll 3,用windows下GNU编译,C 写的thir.dll 请问如何在first.dll中调用thir.dll? 或者在sec.dll中调用thir.dll?...

disemboltu
2014/03/28
98
1
dll的概念 dll导出变量 函数 类 (转)

1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共...

长平狐
2012/10/08
675
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何把你的Linux系统变的更加安全

做为一个小白,以为自己懂了点Linux知识,会搭建Linux各种服务就觉得自己牛的不要要的。在我们团队里面,我将使用了一台破电脑搭建Linux服务器,上面跑着Ftp服务存放着资源,ssh服务可以远程...

问题终结者
1分钟前
0
0
lombok的使用和原理

一、项目背景 在写Java程序的时候经常会遇到如下情形: 新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法 lombok项目的产生就是为了省去我们手...

颖辉小居
1分钟前
0
0
rsync至服务同步-系统日志-screen

rsync: 服务同步;配置文件:/etc/rsyncd.conf 默认端口:873 服务启动:rsync --daemon rsync -av /root/1.txt 192.168.1.2::test/2.txt (test为模块名称) /etc/rsync.conf配置样例: #指定...

ZHENG-JY
3分钟前
0
0
读取文件中内容转换成字符串

package com.lieni.ruyu.api.xmlTool; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Unsuppo......

newdeng
3分钟前
0
0
《PHP和MySQL Web 开发》 第8章 设计Web数据库

LCL WARNING 这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。...

十万猛虎下画山
10分钟前
0
0
Spring+jpaNo transactional EntityManager available

TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务i......

wpfc
11分钟前
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
13分钟前
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
16分钟前
1
0
[MicroPython]TPYBoard智能小车“飞奔的TPYBoard装甲一号”

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具...

bodasisiter
18分钟前
0
0
桌面虚拟化VDI(Virtual Desktop Infrastructure)

为了保证员工(客户)不把公司的资料复制、传输给别人。可以把员工平时办公放在服务器上做。所以使用桌面虚拟化。就是把一个服务器虚拟出很多桌面系统(如:windows)。 桌面虚拟化最大的优势...

王坤charlie
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部