gpt4 book ai didi

windows - 构建并覆盖一个简单的 Winelib DLL

转载 作者:可可西里 更新时间:2023-11-01 10:48:01 33 4
gpt4 key购买 nike

我有一个加载库的 Windows 可执行文件,我想创建一个将覆盖 Windows DLL 的 Winelib DLL。我已经搜索并尝试了 2 天,但它不起作用!请帮助我!

基本上,我创建 mydll.c 和 mydll.spec 以使用以下命令构建 Winelib DLL:

winegcc -m32 -shared -o mydll.dll mydll.c mydll.spec

现在我有了 mydll.dll.so 并且我想覆盖 mydll.dll(两者都在同一个地方)我应该怎么办 ?我尝试重命名 mydll.dll 但在调用该函数时出现页面错误!我还尝试使用 winecfg 配置覆盖或设置 WINEDLLPATH 等环境变量。我不明白如何继续。


我如何在我的 Windows 可执行文件中加载库

HINSTANCE DllHandle;
char str[255];
typedef int(__stdcall * tfp)(char * const);
DllHandle = LoadLibrary("mydll.dll");
tfp fp = (tfp)GetProcAddress(DllHandle, "myfunc");
fp(str);
FreeLibrary(DllHandle);

mydll.spec

@ stdcall myfunc(str)

mydll.c

#include <windef.h>

int WINAPI myfunc(char * str)
{
strcpy(str, "myfunc from the Winelib DLL");
return 0;
}

最佳答案

使用 WINEDEBUG=+module 调试 DLL 加载问题。

我不相信 Wine 会在单个文件夹之外搜索 native .dll.so 文件,但代码在 dlls/ntdll/loader.c:load_builtin_dll 中如果你想检查自己。

关于windows - 构建并覆盖一个简单的 Winelib DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828660/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com