gpt4 book ai didi

c# - 将非托管 EXE 作为资源合并到托管 C# 代码中

转载 作者:搜寻专家 更新时间:2023-10-31 00:44:03 25 4
gpt4 key购买 nike

我有一个用非托管 C++ 编写的给定代码,我将其添加为 C# 程序中的资源。

尝试使用 Assembly.Load 加载非托管 EXE 时, 我得到一个 BadImageFormatException其 InnerException 表示“IL 格式不正确”(很明显)。

我怎样才能让它工作?

我知道将代码用作 DLL 会更好,但由于某些原因,dll 调用的行为方式与我使用 System.Diagnostics.Process.Start 运行非托管 exe 时的行为方式不同。 .

而且我不想有两个单独的 EXE 文件。有什么想法吗?


编辑: 好的,我不再需要这样做了。我的 dll 表现不同,因为我在不同的上下文中使用它(winform 而不是控制台);因此导致问题的功能,SetThreadDesktop ,无法按预期工作。现在要关闭帖子,感谢所有回答的人。

最佳答案

您不能使用 Assembly.Load() 加载非托管的 exe/dll,它只适用于托管的。如果你需要在那个非托管文件上调用 PInvoke,而你想要单个 exe 的原因只是部署,你可以将它打包为嵌入式资源(就像你目前所做的那样)并在文件中的目标机器上解压,并将其用作通常。

关于c# - 将非托管 EXE 作为资源合并到托管 C# 代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570422/

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