[转载]Golang 编译成 DLL 文件

首先撰写 golang 程序 exportgo.go:

package main
import "C"
import "fmt"

//export PrintBye

func PrintBye() {
    fmt.Println("From DLL: Bye!")
}
//export Sum

func Sum(a int, b int) int {    
return a + b;
}
func main() {    
// Need a main function to make CGO compile package as C shared library
}

编译成 DLL 文件:

go build -buildmode=c-shared -o exportgo.dll exportgo.go

编译后得到 exportgo.dll 和 exportgo.h 两个文件。

参考 exportgo.h 文件中的函数定义,撰写 C# 文件 importgo.cs:

using System;
using System.Runtime.InteropServices;
namespace HelloWorld{    
class Hello 
    {
        [DllImport("exportgo.dll", EntryPoint="PrintBye")]        
        static extern void PrintBye();

        [DllImport("exportgo.dll", EntryPoint="Sum")]        
        static extern int Sum(int a, int b);        static void Main() 
        {
            Console.WriteLine("Hello World!");
            PrintBye();

            Console.WriteLine(Sum(33, 22));
        }
    }
}

编译 CS 文件得到 exe

csc importgo.cs

将 exe 和 dll 放在同一目录下,运行。

>importgo.exe

Hello World!
From DLL: Bye!55

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2018-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

用.NET Core实现装饰模式和.NET Core的Stream简介

该文章综合了几本书的内容. 某咖啡店项目的解决方案 ? 某咖啡店供应咖啡, 客户买咖啡的时候可以添加若干调味料, 最后要求算出总价钱. Beverage是所有咖...

6515
来自专栏跟着阿笨一起玩NET

C#反射读取和设置类的属性

http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html

1971
来自专栏我和未来有约会

第2章 对象激活上下文-对象激活

对象激活主要包括 构造字符串 及时激活 对象池 私有组件 1.构造字符串 服务器苏建只能使用默认的构造函数,这样在对...

1999
来自专栏Kiba518

C#线程安全使用(五)

2,Task启动线程,传递CancellationToken。Task传递方式分为两种,一种通过Task的参数进行传递,另一种通过向线程内传递对象的方式传递Ca...

942
来自专栏跟着阿笨一起玩NET

关于webservice不支持方法重载的解决办法

1201
来自专栏Android知识点总结

1-SIII--Json在Android中的使用--Gson

1314
来自专栏大内老A

ASP.NET Core的配置(3): 将配置绑定为对象[上篇]

出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的...

2106
来自专栏跟着阿笨一起玩NET

C#实现文件数据库

本文转载:http://www.cnblogs.com/gaochundong/archive/2013/04/24/csharp_file_database....

2551
来自专栏跟着阿笨一起玩NET

C#实现文件数据库

本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载。

961
来自专栏小怪聊职场

爬虫课堂(二十七)|使用scrapy-redis框架实现分布式爬虫(2)源码分析

5586

扫码关注云+社区

领取腾讯云代金券