Ir para conteúdo
Fernando Sagaz

Erro DirectDrawCreate após compilar ddraw.dll em Dev C++

Recommended Posts

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...

Dll.JPG.5142e1a71506e7c14bf196a7a4f3988e.JPG

 

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por victoria veleda
      Exercício:
      Utilizando a estrutura SWITCH, criar um programa para ler o preço e a categoria de um produto. Depois, calcular e mostrar o valor reajustado com desconto, de acordo com uma das categorias: A = 50%; B = 25%; C = 15%; demais categorias = 5%.
       
      #include <stdio.h>
      int main(){
          
          int valor;
          int porc;
          
          printf("Informe o valor do produto a ser avaliado:\n");
          scanf("%i", &valor);
          
          printf("\nInforme a porcentagem do valor que deseja descobrir:\n\n");
          printf("[50]= 50%%\n");
          printf("[25]= 25%%\n");
          printf("[15]= 15%%\n");
          printf("[5]= 5%%\n");
          scanf("%i", &porc);
          
          int resul = (valor*porc)/100;
          
          
          switch(resul)    
              { 
              case 50:{
                  printf("Com 50%% de desconto fica: %i", resul);
                  break;
                  }
              case 25:{
                  printf("Com 25%% de desconto fica: %i", resul);
                  break;
              }
              case 15:{
                  printf("Com 15%% de desconto fica: %i", resul);
                  break;
              }
              case 5:{
                  printf("Com 5%% de desconto fica: %i", resul);
                  break;
              }
              default :{
                  printf("\n\nEsta opcao nao e valida!");
                  break;
              }
              }
          }
       
       
    • Por victoria veleda
      Exercício:
      Utilizando a estrutura SWITCH, criar um programa para ler o preço e a categoria de um produto. Depois, calcular e mostrar o valor reajustado com desconto, de acordo com uma das categorias: A = 50%; B = 25%; C = 15%; demais categorias = 5%.
       
      #include <stdio.h>
      int main(){
          
          int valor;
          int porc;
          
          printf("Informe o valor do produto a ser avaliado:\n");
          scanf("%i", &valor);
          
          printf("\nInforme a porcentagem do valor que deseja descobrir:\n\n");
          printf("[50]= 50%%\n");
          printf("[25]= 25%%\n");
          printf("[15]= 15%%\n");
          printf("[5]= 5%%\n");
          scanf("%i", &porc);
          
          int resul = (valor*porc)/100;
          
          
          switch(resul)    
              { 
              case 50:{
                  printf("Com 50%% de desconto fica: %i", resul);
                  break;
                  }
              case 25:{
                  printf("Com 25%% de desconto fica: %i", resul);
                  break;
              }
              case 15:{
                  printf("Com 15%% de desconto fica: %i", resul);
                  break;
              }
              case 5:{
                  printf("Com 5%% de desconto fica: %i", resul);
                  break;
              }
              default :{
                  printf("\n\nEsta opcao nao e valida!");
                  break;
              }
              }
          }
       
       
    • Por Allana Pracuccio
      Olá pessoal,
       
      Estou precisando fazer um código que leia um arquivo txt que possui linha e coluna, faça operações simples e salve as respostas em outo arquivo txt.
       
      O arquivo contém somente duas colunas e algumas linhas, por exemplo:
      5.0       4.0
      7.25     2.0
      6.75     3.5
      101.0   75.25
      Preciso que associe o valor da primeira coluna como uma variável x e o segundo valor da linha como variável y.
       
      O código inserindo os dados manualmente é assim:
      main()
      {
          //Coordenadas UTM do pixel de origem (canto superior esquerdo)
          double o_E = 590571.25;
          double o_N = 4662468.75;
          
          double x = 5.0;
          double y = 4.0;
          
          
          //Tamanho do Pixel em metros
          double tam_pixel = 0.5;
          
          double linha, coluna, coord_E, coord_N;
          
          //Coordenada em E (eixo x)
          linha = (x - 1) * tam_pixel;
          coord_E = o_E + linha;
          
          //Coordenada em N (eixo y)
          coluna = (y - 1) * tam_pixel;
          coord_N = o_N - coluna;
          
          printf ("\n Coordenada E = %lf", coord_E);
          printf ("\n Coordenada N = %lf", coord_N);
      }
       
       Eu imagino que tenha que fazer um for após o código ler os valores de x e y do arquivo txt para fazer as operações, mas como não sei importar ainda não fiz essa parte.
       
      Se souberem como me ajudar ficarei muito grata.
       
    • Por sacimaneta
      Crie um programa em C++, que funcione como um sistema de cadastro de currículo, nele deve conter as seguintes informações
      *nome completo do candidato
      *nome do pai
      *nome da mãe
      *idade
      *escolaridade
      *endereço
      *telefone
      *ultima empresa trabalhada; e
      *renda do último serviço
       
      Caso a renda do último serviço seja igual ou maior a (>=) R$5000.00, o programa devera exibir a seguinte mensagem “RUMO AO MERCADO DE TRABALHO!”
      Já se a renda for menor que R$5000,00 e maior que 2000.00, o programa deve exibir as informações do candidato cadastrado, e devera exibir em seguida “Parabéns, a nossa equipe agradece i seu interesse. ”
      Caso a renda seja menor que 2000.00, aparecera a mensagem... “DEU RUIM”
    • Por Hendrius Félix
      Estou na tentativa de fazer um menu interativo, mas estou com um problema. So fiz a primeira parte do login, e da erro quando o usuario nao possui cadastro... pf me ajudem
       
      obs: Trabalho é para fazer um "app", na vdd so uma amostra pra depois ser programado corretamente...
       
       
       
       
      #include <stdio.h> #include <stdlib.h> #include <locale.h> main() {     setlocale(LC_ALL, "Portuguese");     int opcao, desej;     char cadast_, email[20], senha[16], email_[20], senha_[16];          printf("\tBem vindo ao Home Service!\n");     printf("\t\t1.Login\n");     printf("\t\t2.Opções\n");     printf("\t\t3.Contato\n");     printf("\t\t4.Ajuda\n");     printf("\t\t5.Sair\n");     printf("\t\tOpção\n");     scanf("%d", &opcao);     fflush(stdin);          switch(opcao){         case 1: printf("\tVocê já possui cadastro\?\n");                 scanf("%s",&cadast_);                 switch(cadast_){                 case 'sim':                 case 'Sim':                 case 's':                 case 'S': printf("\t\tEmail: ");                            scanf("%s", &email);                           printf("\t\tSenha: ");                            scanf(" %s", &senha);                           printf("\n\t\tBem Vindo de volta!");                           printf("\n\t\tMenu");                           printf("\n\t\tServiços");                           printf("\n\t\tContato");                           printf("\n\t\tBuscar");                                                                 break;                 case 'nao':                 case 'n':                 case 'N':                 case 'Não':                 case 'não':                 case 'Nao': printf("\tDeseja se Cadastrar\?\n") ;                             scanf("%d", &desej);                             switch(desej)                             {                                 case 'sim':                                 case 'Sim':                                 case 's':                                 case 'S': printf("\t\tInsira seu Email: ");                                            scanf("%s", &email_);                                           printf("\t\tInsira sua Senha: ");                                            scanf(" %s", &senha_);                                           printf("Bem Vindo!");                                           printf("\t\t1.Menu");                                           printf("\t\t2.Serviços");                                           printf("\t\t3.Contato");                                           printf("\t\t4.Buscar"); break;                                case 'nao':                                case 'n':                                case 'N':                                case 'não':                                case 'Nao': printf("Ok, até mais...");break;                             }                 default: puts("Opção Invalida, tente novamente!");break;                 }         case 2: puts("");break;         case 3: puts("");break;         case 4: puts("");break;         case 5: puts("");break;         default: puts("Opção invalida, tente novamente!");break;     }      }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.