当前位置: 首页 > 面试题库 >

从Go语言调用的C#DLL(类库)函数

袁炳
2023-03-14
问题内容

您好Go Lang和C#专家,

美好的一天。我想问你们是否有人尝试过Go程序调用C#DLL函数(类库类型)?

我进行了一些初步研究,并看到了以下文章:

- https://github.com/golang/go/wiki/WindowsDLLs
- https://stackoverflow.com/questions/27849137/golang-call-windows-dll-functions

但是这些都是从C Win32实现中创建的DLL。我尝试搜索加载到Go程序中的C#DLL,所有这些都会告诉您在Go程序上调用它之前,您需要具有C ++ /
C(Win32)包装器。

另外,上面的链接将告诉您Go认为我认为是“ C”声明(类型为__declspec)或类似代码(例如WINAPI)。

在这种情况下,有没有一种方法可以完全跳过C / C ++包装器并直接在Go中调用C#DLL函数

您的启发性想法和建议将不胜感激=)!

谢谢


问题答案:

选项1
把你的.NET的DLL到像COM组件这个,那么你可以从golang的步骤,重新调用它,你的第一个环节。请记住,此选项仅适用于Windows。

选项2 将DLL包装在一个简单的C#控制台应用程序中,然后使用os /
exec
在golang中调用该应用程序。如果您的C#DLL是跨平台的,那么您的最终程序仍然是跨平台的。

这两个选项都需要C#的基本知识,要么创建COM组件,要么编写控制台应用程序以调用DLL。IMO后者更容易。



 类似资料:
  • 在 Go 语言开篇中我们已经知道,Go 语言与 C 语言之间有着千丝万缕的关系,甚至被称之为 21 世纪的C语言。 所以在 Go 与 C 语言互操作方面,Go 更是提供了强大的支持。尤其是在 Go 中使用 C,你甚至可以直接在 Go 源文件中编写 C 代码,这是其他语言所无法望其项背的。 格式: 在 import "C" 之前通过单行注释或者通过多行注释编写C语言代码 在 import "C" 之

  • 在 Go 代码中通过 //export Go函数名称 导出Go的函数名称 在 C 代码中通过 extern 返回值类型 Go函数名称(形参列表); 声明 Go 中导出的函数名称 注意://export Go 函数名称 和 extern 返回值类型 Go函数名称(形参列表); 不能在同一个文件中 package main import "C" import "fmt" // 导出Go函数声

  • 问题内容: 我正在尝试创建一个用Go语言编写的静态对象,以与C程序(例如内核模块等)进行接口。 我已经找到了有关从Go调用C函数的文档,但是关于如何走另一条路却找不到很多。我发现这是可能的,但很复杂。 这是我发现的: 有关C和Go之间的回调的博客文章 CGO文档 Golang邮件列表帖子 有任何人对此有经验吗?简而言之,我正在尝试创建一个完全用Go编写的PAM模块。 问题答案: 您可以从C调用Go

  • 本文向大家介绍windows中使用C# 调用 C语言生成的dll,包括了windows中使用C# 调用 C语言生成的dll的使用技巧和注意事项,需要的朋友参考一下 首先建立一个C语言源文件test.c 然后下载mingw64,解压,进入到bin目录,查看是否有gcc.exe ,只要下载正确肯定是有的,可以把这个bin目录加入环境变量,就可以在任意地方运行gcc。偷懒的做法是直接把刚才做好的test

  • 本文向大家介绍易语言注入dll调用函数的方法,包括了易语言注入dll调用函数的方法的使用技巧和注意事项,需要的朋友参考一下 在我们的生活中那,如何操作上述标题的小问题,小编今天就在这里给大家分享一点我的小经验,来增加我们的体验,希望可以给你们带来帮助。 1、首先这不是注入DLL,这是导入DLL函数进PE文件,这个过程需要一个工具LordPE,网上都有可以自己去下载。 2我们知道一旦DLL函数被导入

  • 问题内容: 我正在将Java用于小型应用程序。这是对现有MFC项目的重写。我需要更改一个现有的dll,以启用使用JNI从Java进行的访问。所有这些Java知识对我来说都是新手,因此当我阅读其他论坛帖子时遇到了一些麻烦,并且感觉比较密集。在现有的dll中,我具有如下功能: 愚蠢的提问时间。如何正确设置它以被Java调用? 我尝试了这个: 我包括jni.h,一切编译正常。但是,当我从Java调用它时