我有一个加载库的windows可执行文件,我想创建一个winelib dll,它将覆盖windows dll。我已经找了两天了,但没用!请帮帮我!
基本上,我创建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(*tfp)(char * const);
DllHandle = LoadLibrary("mylib.dll");
tfp fp = (tfp)GetProcAddress(DllHandle, "myfunc");
fp(str);
FreeLibrary(DllHandle);
Mydl规格
@ stdcall myfunc(str)
MyDL.C
#include <windef.h>
int WINAPI myfunc(char * str)
{
strcpy(str, "myfunc from the Winelib DLL");
return 0;
}
最佳答案
使用winedebug=+模块调试dll加载问题。
我不相信wine会搜索native.dll.so单个文件夹之外的文件,但可能是错误的。如果您想检查自己,代码在dlls/ntdll/loader.c中(grep for load_builtin_dll)。