编译用于64位系统上的32位系统崩溃的C#程序和C ++ DLL

我有一个C#应用程序,使用DLL,因为我需要C ++来访问一些非托pipe的user32 APIfunction(我不能使用PInvoke)。 我编译的应用程序和DLL的x86体系结构,一切工作正常的Windows 7 32位。 现在的问题是,在Windows 7 64位,当我尝试使用依赖于DLL的function(但其余的工作正常),应用程序崩溃。

我怀疑这是一个32/64位的问题,所以我试着重新编译x64体系结构的DLL,现在我可以在运行时select在x86和x64之间加载哪个DLL。 但是,当我尝试使用依赖于DLL的function时(这是有道理的,因为我尝试将64位DLL加载到32位程序中),但它仍然崩溃。 我还没有尝试编译应用程序和x64的DLL。 我怀疑它会起作用,但要求我有两个不同的安装者,我不想去那里。 任何线索?

Solutions Collecting From Web of "编译用于64位系统上的32位系统崩溃的C#程序和C ++ DLL"

在与非托管代码进行交互时,您需要确保.Net应用程序在同一子系统(32位或64位)上运行。 正如你所说的你正在加载的DLL是用于x86的,强制.NET只为x86平台而构建。 此设置可以在项目的属性中的构建选项卡中找到。 默认是任何CPU,将设置更改为x86以匹配您的非托管DLL,无论您在64位还是32位操作系统上运行,都应该没问题。