文档章节

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

徐学良
 徐学良
发布于 2015/12/30 19:40
字数 236
阅读 1332
收藏 6

首先编写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
关于JNI写的DLL调用实际业务DLL的问题

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

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

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

长平狐
2013/01/06
69
0
深入分析Windows和Linux动态库应用异同

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

晨曦之光
2012/03/02
56
0

没有更多内容

加载失败,请刷新页面

加载更多

理解数据库的4种隔离级别

本文转自:http://m.blog.csdn.net/article/details?id=51924963 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,...

初雪之音
28分钟前
1
0
主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
今天
4
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
4
0
Jenkins使用

clean install -Dmaven.test.skip=true 系统设置 全局工具配置 其他的配置类似 构建项目配置

1713716445
今天
2
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部