gpt4 book ai didi

c# - 转到 C# 库 | BadImageFormatException异常

转载 作者:IT王子 更新时间:2023-10-29 02:09:49 33 4
gpt4 key购买 nike

我想用 go-code 创建一个库并在 C# winforms 项目中使用它。
对于错误滚动到底部。

设置

  • GO 1.10.2
  • tdm-gcc-5.1.0-3
  • Windows 10/x64
  • 名为 exprt 的 Go 项目

我尝试过的

我创建了一个最小的 go-tool,它在工作目录中创建了一个文件:

package main

import (
"os"
"C"
)

func main() {
// nothing here
}

//export Test
func Test() {
os.OpenFile("created_file.txt", os.O_RDONLY|os.O_CREATE, 0666);
}

接下来的步骤来自 Building a dll with Go 1.7 .

然后我使用以下命令编译为 c-archive:go build -buildmode=c-archive 这给了我 exprt.aexprt.h

之后我创建了一个名为 goDLL.c 的文件(上面链接中的 1:1)并插入了以下代码:

#include <stdio.h>
#include "exprt.h"
// force gcc to link in go runtime (may be a better solution than this)
void dummy() {
Test();
}
int main() {
}

最后,我运行了这个命令来创建我的最终 dll:
gcc -shared -pthread -o goDLL.dll goDLL.c exprt.a -lWinMM -lntdll -lWS2_32这给了我“goDLL.dll”。

我的问题

在 C# 中,我创建了一个带有 1 个按钮的 winforms 项目,它调用这个声明的函数(将 dll 复制到调试文件夹):

[DllImport("goDLL.dll")]
private static extern void Test();

错误

System.BadImageFormatException:“尝试加载格式不正确的程序。(HRESULT:0x8007000B)”

抱歉,文字太大了,但这是我能想到的最简单的测试。

我感谢这里的每一个帮助。

最佳答案

好吧,在这里给出答案https://social.msdn.microsoft.com/Forums/vstudio/en-US/ee3df896-1d33-451b-a8a3-716294b44b2b/socket-programming-on-64bit-machine?forum=vclanguage有写:

The implementation is in a file called ws2_32.dll and there are 32-bit and 64-bit versions of the DLL in 64-bit Windows.

所以我的问题中描述的构建是正确的。

解决方案
C#-Project 必须显式设置为 x64。 AnyCPU 将无法工作并抛出上述问题中显示的错误。

现在一切正常。我将留下问题和答案,因为这是对如何从 C# 中运行 go-code 的完整解释。

关于c# - 转到 C# 库 | BadImageFormatException异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464667/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com