Bom dia, eu tenho a source da dll que faz algumas modificações no client do jogo, extendendo a quantidade de imagens e effeitos que o client normalmente não suportaria e após eu compilar, tento executar o client e aparece o seguinte erro:
Não foi possível localizar o ponto de entrada do procedimento DirectDrawCreate na bilbioteca de vínculo dinâmico...
Já linkei diversas libs no projeto, como: ddraw.lib d3d9.lib.. diversas libs em Microsoft DirectX SDK de diversas versões desde 2005 à 2010, e nada muda.
No entanto, não há erros ao compilar o projeto.
Aqui está uma parte do arquivo dllmain.cpp em que chama o tal DirectDrawCreate:
static int InitMain()
{
char systemDirectory[MAX_PATH] = {};
char systemDDrawDllPath[MAX_PATH] = {};
GetSystemDirectory(systemDirectory, MAX_PATH);
sprintf(systemDDrawDllPath, "%s\\ddraw.dll", systemDirectory);
orig_ddraw = LoadLibrary(systemDDrawDllPath);
if(!orig_ddraw)
{
MessageBox(NULL, "Cannot load system 'ddraw.dll'.", PROJECT_NAME, MB_OK|MB_ICONERROR);
exit(-1);
}
#ifdef __CONFIG__
loadConfig();
HRESULT result = Init(should_use_extended, should_use_alpha);
#else
HRESULT result = Init(
#ifdef __EXTENDED_FILE__
true,
#else
false,
#endif
#ifdef __ALPHA_SPRITES__
true
#else
false
#endif
);
#endif
if(result != S_OK)
{
if(result == E_OUTOFMEMORY)
{
MessageBox(NULL, "Failed to allocate renderer memory.", PROJECT_NAME, MB_OK|MB_ICONERROR);
exit(-1);
}
else
{
MessageBox(NULL, "This version of client is unsupported.", PROJECT_NAME, MB_OK|MB_ICONERROR);
exit(-1);
}
}
return 1;
}
extern "C"
{
__declspec(dllexport) HRESULT WINAPI DirectDrawCreate(void* lpGUID, void* lplpDD, void* pUnkOuter)
{
FARPROC ddcreate = GetProcAddress(orig_ddraw, "DirectDrawCreate");
if(!ddcreate)
return E_INVALIDARG;
return ((HRESULT (WINAPI *)(void*, void*, void*))(DWORD)(ddcreate))(lpGUID, lplpDD, pUnkOuter);
}
}
extern "C"
{
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
return InitMain();
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return 1;
}
}
Alguém poderia me ajudar com este problema?