jjzjj

go - 使用系统调用调用 mono-2.0-sgen.dll 得到 "not a valid Win32 application"

我想通过Go使用附带的Mono框架执行HelloWorldConsole.exe。所以我想调用mono-2.0-sgen.dll函数“mono_main”来执行exe。mono-2.0-sgen.dll是适用于MSWindows的PE32可执行文件,see.但我收到错误“不是有效的Win32应用程序”_=os.Setenv("MONO_PATH",`\mono\lib\mono\4.5;C:\DEV\HelloWorldConsole\HelloWorldConsole\bin\Debug`)_=os.Setenv("MONO_CFG_DIR",`"C:\ProgramFiles(x8

go - 是否可以在 GO 中找到 Windows 上加载的 DLL 的路径?

我有以下GO代码:packagemainimport("syscall")funcmain(){varmod,_=syscall.LoadLibrary("user32.dll")}成功加载user32.dll文件。(这是我在网上找到的一个例子的修改版本)。但是我不知道这个DLL存在于文件系统的哪个位置。我一直在寻找一种方法让Go能够通过syscall库告诉我这一点,但还没有找到实现它的方法。有谁知道获取已加载DLL路径的方法吗? 最佳答案 我现在无法访问运行Go的Windows机器,但它应该是这样的。请注意代码中缺乏适当的资源/错

windows - 如何在 Golang 中将 void 指针传递给 Windows DLL (void**)

我正在尝试使用Golang在Windows上加载ChakraCore.dll,但我无法弄清楚我需要将什么参数类型作为第三个参数传递。我阅读librarycode的假设并松散地遵循EmbeddingChakraCore是第三个参数需要是空指针指针(void**),因为头文件将JsRuntimeHandle定义为typedefvoid*JsRuntimeHandle;如果可能的话,我也希望避免使用CGo。控制台输出:panic:JsCreateRuntimefailed:AnargumenttoahostingAPIwasnullinacontextwherenullisnotallowe

c - Windows DLL 文件的正确构建模式是什么?

这两个步骤:gcc-cmain.cgcc-oa.exemain.oMyThing.dll非常适合制作可以调用MyThing.dll内部方法的Windowsexe。注意没有-c的gccmain.c会给出如下错误:未定义对MyThing_method的引用但是,当尝试使用cgo在Golang程序中使同一个系统工作时,我遇到了与使用没有-c的gcc时相同的undefinedreference错误。我读过:https://github.com/golang/go/wiki/WindowsDLLs并且很想尝试使用syscall.NewLazyDLL但我的问题是我的foo.go文件正在调用C.So

c++ - 在带有 Visual Studio 的 Windows 上使用 swig -go

我想在Windows上使用带有swig的golangcallc++dll。(gc编译,在linux上是成功的。)但是也有一些问题。这是示例。//sampel.hintcompute(inta,intb);//sample.cpp#include#include"sample.h"intcompute(inta,intb){inttemp=(a+b)*(a-b);returntemp;}//sample.i%modulesample%inline%{#include"sample.h"%}intcompute(inta,intb);现在,我使用此cmd生成包装文件:swig-c++-go

windows - 转到异常 "signal arrived during cgo execution"

在什么情况下Go在调用dll时会出现“signalarrivedduringcgoexecution”之类的panic?要调用的代码是——基于go分发的src中的zsyscall_windows.go中的示例:var(//entrynamesfoundusingdumpbin/exportsdllSweph=syscall.NewLazyDLL("swedll32.dll")_swe_jdut1_to_utc=dllSweph.NewProc("_swe_jdut1_to_utc@36")_swe_julday=dllSweph.NewProc("_swe_julday@24"))fu

go - 寻找有关如何在 golang 中创建 dll/so/dylib 的基本示例/资源

我希望将我用golang编写的应用程序的一部分转换为dll/dylib/so,并从我的核心golang应用程序调用它。有没有人知道关于如何执行此操作的任何好的资源或指南,因为我的搜索没有提供大量信息(我发现的大部分内容都是对我理解的功能的旧请求,现在包括在内)请注意:我看过有关如何进行实际构建的文档,更多的是关于如何组织应用程序和公开我缺少的方法如果有人有做类似事情的经验,我也会对这种方法的优缺点感兴趣 最佳答案 c-sharedbuildmode目前仅在Linux上受支持。如此处所示,BuildingadllwithGo1.7,您

c++ - GoLang 将 C.wchar_t 转为字符串

我希望转换[32]C.wchar_t到一个go字符串。数组在dll中定义如下我正在和:typedefstructmyStruct{WCHARsomeString[32];}我在go中定义结构如下:typemyStructstruct{someString[32]C.wchar_t}我在dll中有一个方法:DLLINTERFACEHRESULT__stdcallGetMyStruct(myStruct*ptrMyStruct);此方法将填充someString领域myStruct.我这样调用方法(我认为这工作正常,我无法看到someString的内容):funcgetMyStruct()

windows - 我可以在构建 Go 程序的同时静态链接一些 DLL 吗?

如果您在慢速硬盘上运行带有WindowsDLL依赖项的go应用程序,有时会发生Windows加载这些dll的时间过长。如果您将go应用程序放入Windows服务中,您会遇到严重的问题。特别是在慢速硬盘上,这会导致windows服务超时,服务无法启动。是否有可能以某种方式将这些DLL静态链接到go应用程序?加载DLL后一切正常,但需要两次尝试才能使服务运行。但是在第一次失败后,Windows不会再尝试启动该服务,所以我只好自己手动启动该服务。有人有想法吗? 最佳答案 简短的回答是“否”:“DLL”代表“动态链接库”,静态链接DLL是不

visual-studio - 如何使用 VSCode 在 GOARCH=386 的 64 位 GO 项目上使用 32 位 DLL

我已经使用默认包安装了VSCode和GO扩展。我的项目需要加载一个32位DLL。当我使用F5启动项目时,我在syscall.LoadLibrary()上收到错误193。我在互联网上发现,当有人试图在64位arch上加载32位DLL时,通常会发生错误。我认为如果我使用GOARCH=386进行调试,我将能够加载DLL。但每次我尝试使用GOARCH=386执行时,我都会在VSCode上收到错误消息,提示该架构不受支持。需要帮助。 最佳答案 (我假设64位DLL是遥不可及的)64位进程无法将32位模块加载到其进程空间,32位进程也无法将64