ライブラリをロードする Windows 実行可能ファイルがあり、Windows DLL をオーバーライドする Winelib DLL を作成したいと考えています。検索して試してから2日経ちましたが、うまくいきません!私を助けてください !
基本的に、次のコマンドで Winelib DLL をビルドするために mydll.c と mydll.spec を作成します。
winegcc -m32 -shared -o mydll.dll mydll.c mydll.spec
現在、mydll.dll.so があり、 mydll.dllをオーバーライドしたい(どちらも同じ場所にあります) どうすればよいですか? mydll.dll の名前を変更しようとしましたが、関数が呼び出されたときに Page Fault が発生しました。また、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;
}