【发布时间】:2013-03-27 13:22:54
【问题描述】:
我有一个加载库的 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;
}
【问题讨论】:
-
我纠正了两个错误,mylib 应该是 mydll 并且您缺少一个 __stdcall,没有它会导致核心转储。
标签: windows dll wine getprocaddress winelib