首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法加载C++ x64中的C#应用程序中的Vista

无法加载C++ x64中的C#应用程序中的Vista
EN

Stack Overflow用户
提问于 2008-12-04 14:07:19
回答 5查看 2.8K关注 0票数 1

我有一个用C++编写的动态链接库,需要由C#中的应用程序使用。它在Vista x86下运行得很好,但在x64下却无法加载。因此,我构建了DLL的x64版本,并检测操作系统是x86还是x64,并对相应的DLL使用适当的互操作调用。这在Vista下运行得很好,但是在Vista下,当我试图加载x86时,我得到了一个“并行”的错误。到底为什么它不能加载它,可以做些什么来纠正这个问题?(如果您需要更多信息,请告诉我,我不确定哪些信息与解决此问题相关。)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-04 20:41:31

需要在客户端计算机上安装用于x64的VC90重分发。就清单而言,我认为您可以修改它以删除processorArchitecture标记。要么这样,要么让它说“任何”。

票数 2
EN

Stack Overflow用户

发布于 2008-12-04 14:19:27

第一个想法:你可以试着在项目的C#部分将“平台目标”设置为"x86",看看它是否能在Vista64机器上以32位兼容模式运行吗?

有关SxS错误的更多信息将是有用的-它可能与某些特定的(32位?)未安装的运行时库的版本?

票数 4
EN

Stack Overflow用户

发布于 2008-12-04 14:48:54

关于MadKeithV的答案的一些进一步的信息:

在Windows x64中,进程可以作为32位或64位进程启动。64位进程只能加载64位dlls,32位进程只能加载32位dlls。

如果您的.Net应用程序的平台目标(例如,在项目属性中指定)设置为“任何CPU",则中间代码将根据目标平台被编译为32位或64位代码,即在x64系统上将生成64位代码。

因此,代码不能再加载32位dll。

如果代码加载非托管程序集,则应始终显式指定目标平台。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/340687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档