首页 > 其他分享 >GOLANG:调用delphi7编写的dll

GOLANG:调用delphi7编写的dll

时间:2023-09-19 11:22:05浏览次数:49  
标签:ld exe dll GOLANG mingw delphi7 env go

0. delphi对winapi有很强的封装,使其更易用。

1. delphi声明dll内函数 需要尽量以此方式:
   procedure test(data: pchar; count: integer);stdcall;

2.golang 调用方法:

    str := []byte("abcdedf")
    printTextDll := syscall.NewLazyDLL("demo.dll")
    printBytes := printTextDll.NewProc("test")
    printBytes.Call(uintptr(unsafe.Pointer(&str[0])), uintptr(4))

3. 运行后,大概率会提示,这是由于dll是32位的,golang编译环境为64位

go: no Go source files

4.运行 go env 查看当前运行环境 通常位amd64,此时运行下列指令位32位

go env -w GOARCH=386   
go env -w CGO_ENABLED=1

5. 再次运行代码,有可能出现错误提示 如下:

/ld.exe: cannot find -lmingwex
ld.exe: cannot find -lmingw32
collect2.exe: error: ld returned 1 exit status

6.这是由于mingw安装有异常,重新下载安装即可
  a.从此处https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download下载 
  b.只需选中红框即可

   c.设置环境变量 path 如:c:\mingw\bin

7.再次运行代码即可

 

 

标签:ld,exe,dll,GOLANG,mingw,delphi7,env,go
From: https://www.cnblogs.com/yaoshi641/p/17714153.html

相关文章

  • 编写、引用资源DLL步骤
    创建纯资源DLL时要求/NOENTRY选项。(VS链接选项中设置无入口)使用该选项防止LINK将_main 的引用链接到DLL中。VC版:1、向导生成一个DLL名为456 2、新建xx.h 内容:   #definePNG1 10000    新建一个TEXT文档   编辑内容如下:   #include"xx.h"......
  • golang fyne 添加系统托盘
    环境:gofyne 要求:电脑右下方添加系统托盘,点击图标显示托盘菜单效果:实现:1packagemain23import(4"fyne.io/fyne/v2"5"fyne.io/fyne/v2/app"6"fyne.io/fyne/v2/widget"7"fyne.io/fyne/v2/driver/desktop"8&......
  • golang fyne 创建两个窗口,窗口居中。点击按钮显示第二个窗口 myApp.NewWindow("new")
    环境:gofyne实现:在窗口的按钮中,点击按钮弹出第二窗口,并且窗口居中注意:创建的第一个窗口和第二个窗口必须是通过同一个myApp:=app.New()创建出来的效果:实现:1packagemain23import(4"fmt"56"fyne.io/fyne/v2"7"fyne.io/fyne/v2/app"8......
  • Delphi7中单元文件内各个部分的执行顺序
    注:本文主要是讨论delphi程序启动时和退出时的执行顺序,期间有些知识来源于Delphi帮助,有些来自《Delphi7程序设计教程》(这本书只告诉我有initialization和finalization这两个关键字,但是没讲明白)(唉,现在的书只讨论框框架架,不讨论细节,写出来的东西让你看能看懂,别人一问或者自己一想,......
  • golang项目搭建笔记-cobra
    cobra介绍GitHub地址cobra中,一个命令主要概念为command,arguement,flag,可以理解为谓语、宾语、状语格式为APPNAMECOMMANDARG--FLAG,例如:gitcloneURL--bare项目搭建cobra提供了非常方便的工具cobra-cli,可以快速添加命令,参考官方文档新建项目#进入项目目录gomodin......
  • Golang 基础语法的使用
    1packagecustomer23import(4"encoding/json"5"fmt"6"os"7)89typecustomerstruct{10Namestring11Sexstring12Ageint13Phonestring14......
  • .net native aot dll 库函数导出和调用
    .net程序aot后,就是原生程序了,如果是aot的dll,是可以导出为等价于c语言的native的dll的。导出函数声明如下:[UnmanagedCallersOnly(EntryPoint="OutPut")]publicstaticintOutPut(){return1;}导出后,可以作为原生的dll调用了,在.net程序中,也可以通过pinvoke的方式调......
  • 想入坑golang web,向大佬们请教些问题?
    当你准备入坑Go语言的Web开发时,以下是一些常见的问题,你可以向大佬们请教:如何设置和启动一个GoWeb服务器?Go语言有哪些常用的Web开发框架?它们之间有什么区别和优劣势?Go语言中的路由是如何实现的?如何处理不同的HTTP请求方法和URL参数?Go语言如何处理请求和响应,以及如何......
  • golang工具值generate
     示例:大家经常碰到命名错误码、状态码的同时,又要同步写码对应的翻译,有没有感觉很无聊。这里举一个例子:packagemain​import"fmt"​//定义错误码const(ERR_CODE_OK=0//OKERR_CODE_INVALID_PARAMS=1//无效参数ERR_CODE_TIMEOUT......
  • 个人微信API对接-Golang版本
    golang版个人微信号API,突破登录限制,类似开发公众号一样,开发个人微信号微信机器人......