我正在尝试使用EasyHook挂接一个简单的进程。我正在x64环境中编程/调试,并在Visual Studio C#上使用AnyCpu配置编译我的动态链接库。
问题是,当尝试在inject库函数中使用这个DLL (在另一个项目中,同样的解决方案,也是用AnyCpu编译)时:
RemoteHooking.Inject(TargetPID,"DivisionInject.dll","DivisionInject.dll",ChannelName);(第二个参数为32位系统。第3位用于64位。)
我不知道为什么这一行抛出异常: System.ArgumentException:给定的64位库不存在!
我想用AnyCpu来创建我的动态链接库,我可以在32位系统和64位系统上使用相同的文件( DLL )。这是错的吗?
谢谢。
发布于 2014-08-16 00:20:20
AnyCpu设置基本上意味着如何加载或执行进程或库的确定将基于执行/加载点。编译为AnyCpu的库可以由32位和64位调用进程加载。编译为AnyCpu的可执行文件将在64位计算机上运行64位进程,在32位计算机上运行32位进程。有关AnyCpu目标概念的讨论,请参阅this线程。
如果您的调用方被编译为64位并设置为AnyCpu,它将尝试加载64位库。
发布于 2021-04-15 22:07:58
虽然现在不太常见,但可以在64位计算机上安装Windows 32位。在这种情况下,只有为32位/AnyCpu构建的exe才会运行。反之亦然。32位计算机只能运行Windows 32位。因此,O/S位是决定因素,而不是硬件。
64位机器上的Windows 32位在不想同时支持操作系统或在Windows-64上运行的32位遗留应用程序的企业商店中更为常见。
https://stackoverflow.com/questions/25330031
复制相似问题