关于Win7 64位的问题

时间:2011-02-14 11:17:56

标签: c++ dll windows-7 mfc

我有一个加载DLL的32位C ++ / MFC应用程序(X)。

我有另一个32位.NET 3.5应用程序(Y)加载相同的DLL。

当我在Windows 7 64位下测试这些应用程序时,X不加载DLL 任何问题。但是一旦尝试调用函数,Y就会崩溃 来自DLL。

我的问题是:我能做些什么才能使Y正常工作。

我是否需要某种特殊命令来指示它是32位DLL?

提前致谢!

此致

jfronner

2 个答案:

答案 0 :(得分:3)

通常当事情“崩溃”时会出现错误消息。此错误消息通常很有用。在没有这个消息的情况下,我很难猜测。

我猜您的.net应用程序的目标是“AnyCPU”,64位计算机上运行的是64位进程。 64位进程无法加载32位DLL。如果你将它切换到目标“32位”,那么它将再次工作。

或者您可以将您的DLL编译为64位,但这可能会更棘手。

答案 1 :(得分:2)

如果您将.Net应用程序编译为平台无关,它将在32位平台上以32位执行您的应用程序,在64位平台上以64位执行。

在后一种情况下,当您尝试加载32位DLL时,您的应用可能会崩溃,因为64位应用只能加载64位DLL。

将您的.Net应用程序明确编译为32位。