我有一个加载DLL的32位C ++ / MFC应用程序(X)。
我有另一个32位.NET 3.5应用程序(Y)加载相同的DLL。
当我在Windows 7 64位下测试这些应用程序时,X不加载DLL 任何问题。但是一旦尝试调用函数,Y就会崩溃 来自DLL。
我的问题是:我能做些什么才能使Y正常工作。
我是否需要某种特殊命令来指示它是32位DLL?
提前致谢!
此致
jfronner
答案 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位。