当前位置: 首页 > news >正文

电影网站织梦模版广州比较好的网站建设

电影网站织梦模版,广州比较好的网站建设,成都快速建站公司,怎样做自己的网站1. 实现方式与语法形式基本方式#xff1a;将 Go 程序编译成 DLL 供 C# 调用。1.1 Go代码注意#xff1a;代码中 export 的注释是定义的入口描述不能省略package mainimport Cimport fmtfunc main() { fmt.Println(Test())}var _count 0//Test :… 1. 实现方式与语法形式基本方式将 Go 程序编译成 DLL 供 C# 调用。1.1 Go代码注意代码中 export 的注释是定义的入口描述不能省略package mainimport Cimport fmtfunc main() { fmt.Println(Test())}var _count 0//Test ://export Testfunc Test() int { _count return _count}在 LiteIDE 中将编译配置的 BUILDARGS 自定义值为 --buildmodec-shared -o Test.dll从而形成以下编译语句。go build --buildmodec-shared -o Test.dll1.2 C# 代码[DllImport(Test.dll, EntryPoint Test)]extern static int Test();2. Windows 下编译依赖的环境生成 DLL 依赖于 gcc没有 gcc 环境时会报以下错误gcc: executable file not found in %PATH%GCC下载Windows 64位版本  || Windows 32位版本也可以从从云盘下载。下载之后解压后确保 gcc 命令在搜索路径Path中。更多信息可参考https://www.cnblogs.com/ghj1976/p/3540257.html3. 操作系统 64 位与 32 的编译在 LiteIDE 中可以通过配置 win32.env 和 win64.env 来指定不同的 gcc 环境路径达到生成指定系统的 DLL 文件。4. c# 中操作系统 64 位与 32 的适配在 c# 中判断操作系统是否 64 位可以使用以下语句。bool is64 Environment.Is64BitOperatingSystem;为了在不同的操作系统下加载不同的 DLL采取以下步骤来进行组织。1将 32 位的版本命名为 Test32.dll将 64 位的版本命名为 Test64.dll2定义 ITest 接口将 DLL 将要调用的方法定义为接口方法3分别为ITest接口实现 Test32 与 Test64 类在类中加载相应的 DLL4通过判断操作系统类型实例化一个 ITest 的具体实现类实例来使用具体接口与类实现代码如下public interface ITest{ int Test();}public class Test32 : ITest{ class TestDLL { const string DLL_NAME Test32.dll; [DllImport(DLL_NAME, EntryPoint Test)] public extern static int Test(); } public int Test() { return TestDLL.Test(); }}public class Test64 : ITest{ class TestDLL { const string DLL_NAME Test64.dll; [DllImport(DLL_NAME, EntryPoint Test)] public extern static int Test(); } public int Test() { return TestDLL.Test(); }}实例化与调用ITest test Environment.Is64BitOperatingSystem ? (ITest)new Test64() : (ITest)new Test32();int result test.Test();5. 其它一些问题5.1 字符串转换传入字符串C#: byte[] - GO: *C.char接收字符串GO: string - C#: GoString structGO 定义示例//Hello ://export Hellofunc Hello(name *C.char) string { return fmt.Sprintf(hello %s, C.GoString(name))}C# GoString struct 定义public struct GoString{ public IntPtr p; public int n; public GoString(IntPtr n1, int n2) { p n1; n n2; }}C# DllImport 声明[DllImport(DLL_NAME, EntryPoint Hello, CallingConvention CallingConvention.Cdecl)]public extern static GoString Hello(byte[] name);C# GoString struct 转 Stringpublic string GoStringToCSharpString(GoString goString){ byte[] bytes new byte[goString.n]; for (int i 0; i goString.n; i) { bytes[i] Marshal.ReadByte(goString.p, i); } string result Encoding.UTF8.GetString(bytes); return result;}C# 调用示例GoString goResult test.Hello(Encoding.UTF8.GetBytes(张三));Debug.WriteLine(GoStringToCSharpString(goResult));5.2 调试CallingConvention在声明中加入 CallingConvention CallingConvention.Cdecl 避免未知异常。[DllImport(Test.dll, CallingConvention CallingConvention.Cdecl)]程序崩溃甚至异常提示都没有可在加载 DLL 之前Environment.SetEnvironmentVariable(GODEBUG, cgocheck0);6. 相关参考GO 生成 DLLC# 调用的一个完整小示例https://github.com/Baozisoftware/go-dll字符串处理相关的一个问答https://stackoverflow.com/questions/48208098/using-generated-golang-dll-to-return-string-or-c-char
http://www.zqtcl.cn/news/230957/

相关文章:

  • 用wp做网站备案怎么查自己的邮箱号
  • 苏州企业网站建设公司价格数字媒体应用 网站开发
  • 西宁做网站seo四川省的住房和城乡建设厅网站首页
  • 响应式网站 有哪些弊端可以发广告的网站
  • wordpress 漫画站wordpress加目录
  • 天津商城网站制作深圳品牌网站设计公司
  • 初学网站开发上海市普陀区建设规划局网站
  • 网站开发完成后如何发布做网站用vs还是dw
  • 怎么看网站是否备案可信赖的菏泽网站建设
  • 做网站的优点系统软件开发服务
  • 深圳品牌营销网站建设尚品中国网站
  • 新建网站怎么做关键词南阳手机网站制作
  • 宁波网站建设应届生公司网站备案需要每年做吗
  • 汽车设计网站论坛网站 备案
  • 网站源码带手机版展示型网站首页设计解析
  • 备案的网站名称能重复备案吗为什么打开Wordpress很慢
  • vps网站建设个人网站二级域名做淘宝客
  • 用cms织梦做网站图文教程wordpress分类文章排序
  • 台州网站策划云南招聘网
  • 网站如何设定关键词wordpress 文章关联
  • 京津冀网站建设公司建设监理工程师网站
  • 网站建设的500字小结那些网站做网批
  • 怎么做视频网站首页网站建设公司创业计划书
  • 网加思维做网站推广项目营销推广策划
  • 郫县专业的网站建设免费自己创建个人网站
  • 网站建设公司比较扑克直播软件app开发
  • 天津武清做网站如何搭建自己的微信小程序商城
  • 网站排行榜海珠商城网站建设
  • 太原自助建站怎么提高网站加载速度慢
  • 网站如何做友情链接html5 视频网站 模板