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

标签 c# c++ .net unmanaged

我有一个用非托管 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/

相关文章:

c# - 边界框内是否有经纬度?

c# - 将 MySql Tinyint(1) 数据类型检索到 .Net 应用程序中

c++ - C++中的二进制文件写入问题

c++ - 无法输出到文本文件,文件为空

c# - LINQ to SQL 体系结构。什么是最好的?

c# - 从 sqlite 数据库中选择数据并将值绑定(bind)到 Windows Phone 8 应用程序中的列表框项目

c# - 如何将 Storyboard动画应用于多个 xaml 元素

c++ - 用于 WinRT 的 zlib?

c# - 执行 client.SendAsync 时出现 HttpRequestException

java - Java 或 .NET 的跨语言配置