【发布时间】:2011-05-26 10:57:45
【问题描述】:
我有一个使用 DLL 的 C# 应用程序,因为我需要 C++ 来访问 user32 API 的一些非托管功能(我不能为此使用 PInvoke)。我为 x86 架构编译了应用程序和 DLL,并且在 Windows 7 32 位上一切正常。现在的问题是,在 Windows 7 64 位上,当我尝试使用依赖 DLL 的功能时应用程序崩溃(但其他所有功能都可以正常工作)。
我怀疑这是 32/64 位问题,所以我尝试为 x64 架构重新编译 DLL,现在我可以在运行时选择在 x86 和 x64 之间加载哪个 DLL。但是当我尝试使用依赖于 DLL 的功能时它仍然崩溃(这很有意义,因为我尝试将 64 位 DLL 加载到 32 位程序中)。我还没有尝试为 x64 编译应用程序和 DLL。我怀疑它会起作用,但是它需要我有两个不同的安装程序,我不想去那里。有什么线索吗?
【问题讨论】:
-
如果两者都是为 x86 编译的,它应该可以工作。能否在 64 位系统上调试并提供更多详细信息?
-
我用来测试的64位系统是朋友的电脑。要调试它,我需要在 vmware 或 vbox 中安装 Windows 7 64 位,我可以这样做,但设置它需要一些时间。
-
在 64 位系统上有 32 位 CRT DLL 吗?
-
是的,我有 32 位 CRT DLL
标签: c# c++ windows dll 32bit-64bit