64位进程中的任何CPU C#DLL加载32位DLL 我有一个64位的C++进程,加载一个YANCPUC的C dll。 这个ANYCPU CPU可以加载32位C++ DLL,还是只能加载64位DLL?

64位进程中的任何CPU C#DLL加载32位DLL 我有一个64位的C++进程,加载一个YANCPUC的C dll。 这个ANYCPU CPU可以加载32位C++ DLL,还是只能加载64位DLL?,c#,c++,64-bit,32bit-64bit,C#,C++,64 Bit,32bit 64bit,谢谢!:-) 不,不能将32位DLL加载到64位进程中 AnyCPU意味着C#DLL可以加载到32位或64位进程中,而不是它可以加载任意位的DLL。您只能加载与进程具有相同位的DLL。任何CPUdll本身都可以在64位和32位进程中加载,但这并不意味着in可以将本机32位dll加载到64位进程中 我所知道的唯一解决方法是使用32位助手进程加载32位dll,然后与该进程通信。32位dll不能在64位进程中加载 我在您的问题中看到一个问题:不可能是您的代码> ANCPUP程序集加载32位C++ DL

谢谢!:-)

不,不能将32位DLL加载到64位进程中


AnyCPU
意味着C#DLL可以加载到32位或64位进程中,而不是它可以加载任意位的DLL。

您只能加载与进程具有相同位的DLL。
任何CPU
dll本身都可以在64位和32位进程中加载,但这并不意味着in可以将本机32位dll加载到64位进程中


我所知道的唯一解决方法是使用32位助手进程加载32位dll,然后与该进程通信。

32位dll不能在64位进程中加载

<>我在您的问题中看到一个问题:不可能是您的代码> ANCPUP程序集加载32位C++ DLL,因为它使程序集对这个体系结构有特殊性。 使其成为AnyCPU意味着它将动态加载特定于运行它的体系结构的DLL。这样,它可以在任何CPU上运行


简而言之,程序集被错误地标记为AnyCPU。

一个AnyCPU DLL在调用进程的上下文中运行,根据您的问题,它是x64。如果此AnyCPU DLL加载另一个DLL,则它也会在加载AnyCPU DLL的x64调用进程的上下文中运行。这就是跨不同平台运行代码的问题。如果希望通过调用AnyCPU DLL的x64进程运行32位DLL,则需要创建一个称为代理进程的程序-这基本上是一个x86(32位)进程,可以运行并加载要从调用x64进程访问的32位DLL。运行此x86进程后,此x64进程可以使用进程间通信与x86进程(已加载x86 DLL)通信,X86 DLL函数的间接调用可以从X64过程中实现。

其他工作是让任何CPU组件加载与体系结构对应的C++ DLL,如果你有一个64位版本的DLL,显然是最好的解决方案。32位汇编也将运行在任何CPU上。