你好
我想在c#中创建一个64位应用程序,并且想要在其中使用由C++ builder(32位)创建的dll。但是当我尝试加载该dll时,应用程序会崩溃。在32位下构建时它可以工作。有没有办法在64位应用程序中使用这个dll?
不可能做到这一点。在Windows中,进程要么是32位的,要么是64位的,它只能加载与之匹配的DLL。任何尝试加载不匹配的DLL都将失败并产生错误。
如果您需要匹配32位和64位代码,则需要使用多个进程。但在这种情况下,我建议将应用程序设置为32位或将DLL设置为64位。
你想构建一个64位应用程序,还是想构建一个能在64位环境下运行的应用程序?即使目标平台是x86,你的应用程序在64位环境中也可以完美运行。
在Windows上,您无法将32位DLL加载到64位进程中。
我自己从未尝试过,但您可能能够创建一个单独的32位应用程序,可以在不同的进程中运行并充当DLL的代理。然后,您的应用程序可以以64位运行,并通过WCF上的远程过程调用与DLL通信。
如果性能是一个问题,那么您最好的选择是尽可能在64位中重新构建DLL。