unmanagedresources - 非托管dll代码

标签 unmanagedresources

我有一个 C#(.NET 3.5、VS2005 Professional)应用程序,它使用用 C/C++ 编写的非托管 32 位库。我使用的 API 是这样的:

void * 初始化(int x);

voic GetData(void *);

当我在 Windows XP 32 位上运行它时这有效,但在 Windows XP64 位上它抛出异常:

未处理的异常:System.Reflection.TargetInvocationException:调用目标抛出异常。 ---> System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B) 在 Aktuelizator.CommonLibrary.InitializeRingBuffer(Int32 暗淡) 在 Aktuelizator.AktuelizatorWService.AktuelizatorWS..ctor()

当从 32 位 unmanages 应用程序 writetn 在 C/C++ 中调用时,这些非托管 DLL 在 64 位 XP 下工作。

有人知道吗?

最佳答案

您的构建配置平台设置为“任何 CPU”,这意味着在 64 位操作系统上它以 64 位运行,您无法加载 dll。将它设置为 x86,这将强制它以 32 位运行,无论操作系统如何,你的 dll 都可以正常加载。

关于unmanagedresources - 非托管dll代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/755411/

相关文章:

c# - 需要在使用 TcpClient 的类上实现终结器?

c# - 我们在C#中有非托管资源吗?

c# - 我是否需要在 C# 中使用来自非托管 C++ dll 的原始数据类型执行 MarshalAs?

c# - Parallel for 中的 Dispose 比常规 for 循环慢。为什么?

.net - 将非托管 DLL 部署到输出目录

scala - 如何在 SBT .scala 项目配置中从多个非托管目录添加 jar

c# - 非托管资源和 Dispose()

f# - [<AutoOpen>] 有反义词吗?

c# - 没有分配给 var 的 COM 对象是否没有被释放?