Closed muyu1944 closed 1 month ago
另外 ProcessPrng的问题就在我们就在之前的问题里统一跟进把,这里只讨论WaitOnAddress、WakeByAddressAll、WakeByAddressSingle,报错问题。
不过Address的那一套接口问题找我没有太大作用,建议自己排查一下thunk工作时链接器顺序。
https://github.com/Chuyu-Team/YY-Thunks/releases/tag/v1.0.10-Beta4 该版本开始将ProcessPrng设置为小于 Win7时进行Thunk
@mingkuang-Chuyu
- 自行调整链接顺序
有什么参考的操作方法吗?比如在vs下是怎么处理的 如果是把yy-thunks设置为默认库的话因为先于标准库被链接所以会有一堆错误,而且即便是这样依然还是缺少api-ms-win-core-synch-l1-2-0.dll
@mingkuang-Chuyu
- 自行调整链接顺序
有什么参考的操作方法吗?比如在vs下是怎么处理的 如果是把yy-thunks设置为默认库的话因为先于标准库被链接所以会有一堆错误,而且即便是这样依然还是缺少api-ms-win-core-synch-l1-2-0.dll
VS里只要在链接器里,顺序比系统的库考前即可,修改的是AdditionalDependencies。
假设之前是AdditionalDependencies=系统库A;系统库B; 修改后就是 AdditionalDependencies=YY-Thunks.obj;系统库A;系统库B;
AdditionalDependencies的内容会按顺序直接传递给链接器,如下所示:
// 注意这里的man.obj YY-Thunks.obj 系统库A 系统库B,均为文件路径
link man.obj YY-Thunks.obj 系统库A 系统库B
至于rust不太清理,但是理论上只要比系统库提前,那就肯定就没问题了。
rust不太熟悉
或者你来群里问问别人……QQ群:633710173
@mingkuang-Chuyu 看了一下rust最终调用link.exe的命令参数,然后套了个壳修改了参数的顺序,最终的命令是这样的:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86\link.exe
/NOLOGO
/LARGEADDRESSAWARE
/SAFESEH
C:\Users\Administrator\Downloads\Compressed\thunk\objs\x86\YY_Thunks_for_WinXP.obj
C:\Users\ADMINI~1\AppData\Local\Temp\2\rustc4HJL2D\symbols.o
C:\Users\Administrator\Downloads\Compressed\rust\demo\target\i686-pc-windows-msvc\release\deps\demo.demo.fcebccbb40309f07-cgu.0.rcgu.o
/LIBPATH:C:\Users\Administrator\Downloads\Compressed\thunk\TargetPlatform\5.1.2600.0\lib\Win32
/LIBPATH:C:\Users\Administrator\Downloads\Compressed\rust\demo\target\i686-pc-windows-msvc\release\deps
/LIBPATH:C:\Users\Administrator\Downloads\Compressed\rust\demo\target\release\deps
/LIBPATH:C:\Users\Administrator\.cargo\registry\src\mirrors.sjtug.sjtu.edu.cn-7a04d2510079875b\windows_i686_msvc-0.48.5\lib
/LIBPATH:C:\Users\Administrator\.cargo\registry\src\mirrors.sjtug.sjtu.edu.cn-7a04d2510079875b\windows_i686_msvc-0.52.5\lib
/LIBPATH:C:\Users\Administrator\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib
C:\Users\ADMINI~1\AppData\Local\Temp\2\rustc4HJL2D\libstd-9e573f08bb1b5b36.rlib
C:\Users\Administrator\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib\libcompiler_builtins-986082c24092962a.rlib
windows.0.52.0.lib
ntdll.lib
windows.0.48.5.lib
windows.0.52.0.lib
kernel32.lib
advapi32.lib
kernel32.lib
ntdll.lib
userenv.lib
ws2_32.lib
kernel32.lib
ws2_32.lib
kernel32.lib
msvcrt.lib
/NXCOMPAT
/LIBPATH:C:\Users\Administrator\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib
/OUT:C:\Users\Administrator\Downloads\Compressed\rust\demo\target\i686-pc-windows-msvc\release\deps\demo.exe
/OPT:REF,ICF
/DEBUG:NONE
/SUBSYSTEM:CONSOLE,5.01
把yy-thunks的obj和vc-ltl的libpath都提到系统库前面,但问题依旧,x86下ProcessPrng依然缺失可能也是因为同样的原因,暂时先这样吧,对x86倒不是很执着
@muyu1944 既然你任然有问题,我先把问题打开。目前我这边只能确认说 x86 XP.obj没有问题,WaitOnAddress、ProcessPrng等函数都在。你在群了吗?可以私聊发我一句话?
@mingkuang-Chuyu 你就当我是个路人甲就好,就不进群了,qq也用的少,哈哈 我的目的只是为了解决rust的win7兼容问题(虽然官方还保留了win7的工具链),顺便测了测能不能下探到xp 从源码看确实都不缺,暂时没思路就当作悬案吧 issue开不开都行,说不好以后某个版本的rust自己就正常了,也说不好又出现新情况 项目是非常好的项目,点赞👍
既然你觉得不方便加群,那暂时就无法跟进了。
Bug就先开着,用于跟踪问题。反正这是个人项目,Bug数量不涉及考核。
我再跟群里的其他人聊聊,顺道看看未来是否还有其他人遇到。当然我还是希望你可以加群讨论。这里应该是触发了某种未知规则。说不定可以学习到新东西。
获取Outlook for Androidhttps://aka.ms/AAb9ysg
From: muyu1944 @.> Sent: Tuesday, May 7, 2024 7:18:08 PM To: Chuyu-Team/YY-Thunks @.> Cc: mingkuang @.>; Mention @.> Subject: Re: [Chuyu-Team/YY-Thunks] Vista模式中任然会报告找不到ProcessPrng (Issue #78)
@mingkuang-Chuyuhttps://github.com/mingkuang-Chuyu 你就当我是个路人甲就好,就不进群了,qq也用的少,哈哈 我的目的只是为了解决rust的win7兼容问题(虽然官方还保留了win7的工具链),顺便测了测能不能下探到xp 从源码看确实都不缺,暂时没思路就当作悬案吧 issue开不开都行,说不好以后某个版本的rust自己就正常了,也说不好又出现新情况 项目是非常好的项目,点赞👍
— Reply to this email directly, view it on GitHubhttps://github.com/Chuyu-Team/YY-Thunks/issues/78#issuecomment-2098166837, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEX7GZJB6ONE4WXFY3F3HWTZBCZ7BAVCNFSM6AAAAABHIWANTGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJYGE3DMOBTG4. You are receiving this because you were mentioned.Message ID: @.***>
@mingkuang-Chuyu 又搞了搞,打印了链接阶段的信息,发现问题出在link参数的C:\Users\ADMINI~1\AppData\Local\Temp\2\rustc4HJL2D\libstd-9e573f08bb1b5b36.rlib
上,这个文件是rust在编译时内部生成的,编译完成就会销毁,这个lib里就是那4个函数,链接时就从这里链接到了api-ms-win-core-synch-l1-2-0.dll和bcryptprimitives.dll
正在搜索 C:\Users\ADMINI~1\AppData\Local\Temp\2\rustcjxip1k\libstd-9e573f08bb1b5b36.rlib:
已找到 __imp_WakeByAddressSingle
已在 demo.demo.fcebccbb40309f07-cgu.0.rcgu.o 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll)
已找到 __imp_WaitOnAddress
已在 demo.demo.fcebccbb40309f07-cgu.0.rcgu.o 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll)
已找到 __imp_WakeByAddressAll
已在 demo.demo.fcebccbb40309f07-cgu.0.rcgu.o 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll)
已找到 __imp_ProcessPrng
已在 demo.demo.fcebccbb40309f07-cgu.0.rcgu.o 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll)
已找到 __IMPORT_DESCRIPTOR_api-ms-win-core-synch-l1-2-0
已在 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll) 中引用
已在 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll) 中引用
已在 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll) 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll)
已找到 __IMPORT_DESCRIPTOR_bcryptprimitives
已在 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll) 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll)
已找到 __NULL_IMPORT_DESCRIPTOR
已在 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll) 中引用
已在 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll) 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll)
已找到 api-ms-win-core-synch-l1-2-0_NULL_THUNK_DATA
已在 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll) 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(api-ms-win-core-synch-l1-2-0.dll)
已找到 bcryptprimitives_NULL_THUNK_DATA
已在 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll) 中引用
已加载 libstd-9e573f08bb1b5b36.rlib(bcryptprimitives.dll)
我不太清楚thunk这个obj的原理,如果我在link阶段不添加这个rlib文件,就会报错找不到那4个函数,是因为主程序编译出的.o文件指明了要去外部链接吗,有什么办法把链接指向thunk的obj呢
demo.demo.fcebccbb40309f07-cgu.0.rcgu.o : error LNK2019: 无法解析的外部符号 __imp_WakeByAddressSingle,该符号在函数 __ZN4core3ptr131drop_in_place$LT$std..sync..mutex..MutexGuard$LT$alloc..vec..Vec$LT$alloc..sync..Arc$LT$mio..sys..windows..afd..Afd$GT$$GT$$GT$$GT$17h82ba288828c16bf0E 中被引用
demo.demo.fcebccbb40309f07-cgu.0.rcgu.o : error LNK2019: 无法解析的外部符号 __imp_WaitOnAddress,该符号在函数 __ZN3std3sys4sync4once5queue4Once4call17hacd048aeae5a3ce5E 中被引用
demo.demo.fcebccbb40309f07-cgu.0.rcgu.o : error LNK2019: 无法解析的外部符号 __imp_WakeByAddressAll,该符号在函数 __ZN3std3sys4sync6rwlock5futex6RwLock22wake_writer_or_readers17h8ffd0bbc0cdbe5e4E 中被引用
demo.demo.fcebccbb40309f07-cgu.0.rcgu.o : error LNK2019: 无法解析的外部符号 __imp_ProcessPrng,该符号在函数 __ZN3std4hash6random11RandomState3new4KEYS7__getit17h43019d36845910d8E 中被引用
libstd-9e573f08bb1b5b36.rlib
你好,你这个链接信息是怎么打开的?
@zhizhi-dev 我是手写了个link套壳真正的link,然后使用/VERBOSE输出link信息,主要是顺便调整参数,单纯看信息cargo本身似乎也能做到
你编译出的程序是64位的,但是用了32位的yy-thunks,所以链接不进去
@wwh1004 是32位的,我都是在32机测试过的,如果是64位程序,系统会提示该映像文件有效,但不适用于此计算机类型,32位会提示找不到某某dll
__imp_WaitOnAddress这种名字是64位的,32位是impWaitOnAddress@16。你打印的链接器日志就是这样显示的。
给你问了chatgpt
__imp_WaitOnAddress和impWaitOnAddress@16都是在Windows平台上使用的符号名称,它们分别表示64位和32位的WaitOnAddress函数的导入符号。
在Windows的64位环境中,函数调用约定是fastcall,这意味着函数的参数会通过寄存器传递,而不是通过堆栈。因此,64位的WaitOnAddress函数的导入符号是__imp_WaitOnAddress。
在Windows的32位环境中,函数调用约定是stdcall,这意味着函数的参数会通过堆栈传递,并且函数的名字会被修饰以包含参数的总字节数。因此,32位的WaitOnAddress函数的导入符号是impWaitOnAddress@16,其中@16表示这个函数有4个参数,每个参数占用4个字节,总共16个字节。
注意,这些只是符号的名称,它们并不直接决定函数的实现或者行为。函数的实现和行为是由其对应的代码决定的,而这些代码是在函数所在的库(例如Windows的kernel32.dll)中定义的。
我也同意@wwh1004 的观点
如果只根据 C:\Users\ADMINI~1\AppData\Local\Temp\2\rustcjxip1k\libstd-9e573f08bb1b5b36.rlib的那段日志,你这边链接的确实不是x86,因为x86前缀是 __imp__
而不是__imp_
。
当然这不排除是rust生成代码时出错了……那几个符号名称恰好生成错误。
而这样也就解释通了,rust找的是 __imp__
,而x86/YY-Thunks.obj 里的符号是 __imp_
,这必然就找不到了……所以YY-Thunks是不可能生效的。
我一开始以为是链接器有什么其他新规则呢。
$env:RUSTFLAGS=" -Clink-args=path_to/YY_Thunks_for_Vista.obj -L path_to_vc_ltl5/TargetPlatform/10.0.19041.0/lib/Win32 -Clink-args=/subsystem:console,5.01 -Clink-args=oldnames.lib" 把上方的path换一下 然后直接cargo build --release 我这样是可以成功在win7 上运行rust1.78的产物
$env:RUSTFLAGS=" -Clink-args=path_to/YY_Thunks_for_Vista -L path_to_vc_ltl5/TargetPlatform/10.0.19041.0/lib/Win32 -Clink-args=/subsystem:console,5.01 -Clink-args=oldnames.lib" 把上方的path换一下 然后直接cargo build --release 我这样是可以成功在win7 上运行rust1.78的产物
有办法YY-Thunks改造成crate包吗?
@muyu1944 是否可以上传你的编译产物?
$env:RUSTFLAGS=" -Clink-args=path_to/YY_Thunks_for_Vista -L path_to_vc_ltl5/TargetPlatform/10.0.19041.0/lib/Win32 -Clink-args=/subsystem:console,5.01 -Clink-args=oldnames.lib" 把上方的path换一下 然后直接cargo build --release 我这样是可以成功在win7 上运行rust1.78的产物
有办法YY-Thunks改造成crate包吗?
目前有一个https://github.com/felixmaker/thunk/issues/9
我测试了下,确实是rust的锅。我这边32位编译出来也是不能连接到yythunks。
rust的libstd自己搞了一个导入表的结构
D:\Downloads\i686-pc-windows-msvc\lib>llvm-nm -U libstd-3fc3a42ac50822ec.rlib
lib.rmeta:
00000001 a @feat.00
llvm-nm.exe: error: libstd-3fc3a42ac50822ec.rlib(std-3fc3a42ac50822ec.std.9d38592f59fb1e2b-cgu.0.rcgu.o): Unknown attribute kind (91) (Producer: 'LLVM18.1.4-rust-1.80.0-nightly' Reader: 'LLVM 17.0.3')
bcryptprimitives.dll:
00000000 i .idata$2
00000000 ? .idata$4
00000000 ? .idata$5
00000000 i .idata$6
00000000 I __IMPORT_DESCRIPTOR_bcryptprimitives
bcryptprimitives.dll:
00000000 I __NULL_IMPORT_DESCRIPTOR
bcryptprimitives.dll:
00000000 I bcryptprimitives_NULL_THUNK_DATA
bcryptprimitives.dll:
00000000 T ProcessPrng
00000000 T __imp_ProcessPrng
api-ms-win-core-synch-l1-2-0.dll:
00000000 i .idata$2
00000000 ? .idata$4
00000000 ? .idata$5
00000000 i .idata$6
00000000 I __IMPORT_DESCRIPTOR_api-ms-win-core-synch-l1-2-0
api-ms-win-core-synch-l1-2-0.dll:
00000000 I __NULL_IMPORT_DESCRIPTOR
api-ms-win-core-synch-l1-2-0.dll:
00000000 I api-ms-win-core-synch-l1-2-0_NULL_THUNK_DATA
api-ms-win-core-synch-l1-2-0.dll:
00000000 T WaitOnAddress
00000000 T __imp_WaitOnAddress
api-ms-win-core-synch-l1-2-0.dll:
00000000 T WakeByAddressSingle
00000000 T __imp_WakeByAddressSingle
api-ms-win-core-synch-l1-2-0.dll:
00000000 T WakeByAddressAll
00000000 T __imp_WakeByAddressAll
@wwh1004 @mingkuang-Chuyu 但程序确实是32位的,所以是说rust自己搞的引用不是标准规则的引用所以链接不到yy-thunks吗?
demo.zip demo.exe是最终产物,libstd.rlib是rust编译中间产物
@wwh1004 @mingkuang-Chuyu 但程序确实是32位的,所以是说rust自己搞的引用不是标准规则的引用所以链接不到yy-thunks吗?
demo.zip demo.exe是最终产物,libstd.rlib是rust编译中间产物
可以试下我上方的方法
对,是32位的,是鸭子说的rust代码生成时生成了错误的符号。64位下这个符号是对的,但是32位下是不标准的。
@muyu1944 你的上传链接怎么会是🐎云…… @wwh1004 谢谢你的排查结果。
目前解决方案还是有的,就我是这边使用Weak转发,转发到rust错误规则里就可以了。但是我目前不确定rust这边是不是认为Bug?如果它认为这是Bug,它可能会修复。
是不是可以先反馈到rust那边。
@wwh1004 @mingkuang-Chuyu 但程序确实是32位的,所以是说rust自己搞的引用不是标准规则的引用所以链接不到yy-thunks吗?
demo.zip demo.exe是最终产物,libstd.rlib是rust编译中间产物
可以试下我上方的方法
我最开始使用的是thunk --os xp --arch x86 -- --release,后来自己调试的命令就已经换成类似的了:
env RUSTFLAGS="-Awarnings -C link-args=C:\Users\Administrator\Downloads\Compressed\thunk\objs\x86\YY_Thunks_for_WinXP.obj -L C:\Users\Administrator\Downloads\Compressed\thunk\TargetPlatform\5.1.2600.0\lib\Win32 -C link-args=/SUBSYSTEM:CONSOLE,5.01" cargo build --target i686-pc-windows-msvc --release
@wwh1004 @mingkuang-Chuyu 但程序确实是32位的,所以是说rust自己搞的引用不是标准规则的引用所以链接不到yy-thunks吗?
demo.zip demo.exe是最终产物,libstd.rlib是rust编译中间产物
可以试下我上方的方法
我最开始使用的是thunk --os xp --arch x86 -- --release,后来自己调试的命令就已经换成类似的了:
env RUSTFLAGS="-Awarnings -C link-args=C:\Users\Administrator\Downloads\Compressed\thunk\objs\x86\YY_Thunks_for_WinXP.obj -L C:\Users\Administrator\Downloads\Compressed\thunk\TargetPlatform\5.1.2600.0\lib\Win32 -C link-args=/SUBSYSTEM:CONSOLE,5.01" cargo build --target i686-pc-windows-msvc --release
得用x64的YY_Thunks_for_Vista.obj这个 然后打包的时候不需要加-target i686-pc-windows-msvc 不然会报错
@wwh1004 @mingkuang-Chuyu 但程序确实是32位的,所以是说rust自己搞的引用不是标准规则的引用所以链接不到yy-thunks吗?
demo.zip demo.exe是最终产物,libstd.rlib是rust编译中间产物
可以试下我上方的方法
我最开始使用的是thunk --os xp --arch x86 -- --release,后来自己调试的命令就已经换成类似的了:
env RUSTFLAGS="-Awarnings -C link-args=C:\Users\Administrator\Downloads\Compressed\thunk\objs\x86\YY_Thunks_for_WinXP.obj -L C:\Users\Administrator\Downloads\Compressed\thunk\TargetPlatform\5.1.2600.0\lib\Win32 -C link-args=/SUBSYSTEM:CONSOLE,5.01" cargo build --target i686-pc-windows-msvc --release
得用YY_Thunks_for_Vista.obj这个 然后打包的时候不需要加-target i686-pc-windows-msvc
加target是因为我host是x86_64的工具链,所以得指明是编译成32位,用vista的obj我也试过,最开始我就写了x86下xp和vista都有这个现象
@muyu1944 你的上传链接怎么会是🐎云…… @wwh1004 谢谢你的排查结果。
目前解决方案还是有的,就我是这边使用Weak转发,转发到rust错误规则里就可以了。但是我目前不确定rust这边是不是认为Bug?如果它认为这是Bug,它可能会修复。
是不是可以先反馈到rust那边。
有段时间访问github不太通畅,就把一些静态资源转码云了,结果最近pages还给停了 我可以提提看,这个现象你有没有一个比较正式的表达,我转过去
有没有可能rust就是为了用同一种写法来同时兼容32位和64位,才搞了libstd这个么东西来适配,编译64位程序的时候链接器不会链接这个libstd
@muyu1944 来帮忙试试这个文件,我把所有符号都添加了一下rust那种奇葩的命名规则。 YY_Thunks_for_x86_rust_fix.zip
群里测试通过,接下来转换为需求,在rust适配需求 #76 中统一跟进:
@muyu1944 请问我给你的版本可以解决rust x86下找不到符号问题吗?如果确认解决,我就就开始进行合码了。
@mingkuang-Chuyu 已确认问题解决
多谢,其实我任然感觉rust的raw-dylib+undecorated机制存在安全问题,按理说只要给lib里的nametype指定为IMPORT_NAMEUNDECORATE,在链接时链接器会自动删除@ 前缀后缀……
但是现在rust非要搞创新,把这个去除前缀后缀的过程放在了编译时……
假设用户导入stdcall _WakeByAddressSingle,但是已经存在cdecl C约定的WakeByAddressSingle导出函数怎么办。这是不是就要打架了……
这特性来说,rust真的太……垃圾了
获取Outlook for Androidhttps://aka.ms/AAb9ysg
From: muyu1944 @.> Sent: Friday, May 10, 2024 7:29:38 AM To: Chuyu-Team/YY-Thunks @.> Cc: mingkuang @.>; Mention @.> Subject: Re: [Chuyu-Team/YY-Thunks] rust程序可能意外的隐式导入WakeByAddressSingle、ProcessPrng等函数 (Issue #78)
@mingkuang-Chuyuhttps://github.com/mingkuang-Chuyu 已确认问题解决
― Reply to this email directly, view it on GitHubhttps://github.com/Chuyu-Team/YY-Thunks/issues/78#issuecomment-2103599933, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEX7GZMS66ZNTSDRJKSU3X3ZBQBGFAVCNFSM6AAAAABHIWANTGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBTGU4TSOJTGM. You are receiving this because you were mentioned.Message ID: @.***>
有没有可能rust就是为了用同一种写法来同时兼容32位和64位,才搞了libstd这个么东西来适配,编译64位程序的时候链接器不会链接这个libstd
已经向rust体检bug,但是我不确定rust是否受理 https://github.com/rust-lang/rust/issues/124958
rust版本:
1.78.0
vs版本:2017
vc-ltl版本:5.0.10-beta2
yy-thunks版本:1.0.10-beta3
使用thunk仓库提供的thunk命令编译:
thunk --os xp --arch x86 -- --release
缺失dll:
api-ms-win-core-synch-l1-2-0.dll
缺失函数:WaitOnAddress
、WakeByAddressAll
、WakeByAddressSingle
这个库只在编译x86程序时会链接,xp和vista都会链接,编译x64程序不会出现
另外 #76 这个缺失ProcessPrng的现象, 当程序引用tokio的时候,xp x64没问题了,vista x64还是会链接这个函数,目前是只在xp的obj里做了处理,vista的obj还没加上吗?
问题列表
WaitOnAddress
、WakeByAddressAll
、WakeByAddressSingle
ProcessPrng
排查记录
2024年5月9日
__imp_WakeByAddressSingle
,导致无法命中YY-Thunks。2024年5月7日
x86/YY_Thunks_for_WinXP.obj
没有问题,WaitOnAddress
、WakeByAddressAll
、WakeByAddressSingle
ProcessPrng
均存在。(难道用户侧自己的obj存在问题???)x86/YY_Thunks_for_WinXP.obj
前至于 系统库文件。