Ir para conteúdo
Fórum Script Brasil

filipegiovany

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre filipegiovany

filipegiovany's Achievements

0

Reputação

  1. A dúvida é a seguinte: Como faço pra chamar uma DLL a partir de outra DLL passando parâmetros por referência? Conforme descrito acima, neste protótipo, somento consigo chamar uma função de uma DLL a partir de outra DLL para funções sem parâmetros. Esquisito, porque eu consigo chamar funções de qualquer tipo da DLL se for de um programa (main). qualquer ajuda é válida!!!
  2. Galera, sou iniciante na linguagem C e estou tentando criar uma DLL pra chamar outra DDL a partir de um programa. Explicando melhor: Tenho um programa "Program1" que vai chamar a DLL1 que deverá chamar a DLL2. Program (Instanciar e chamar DLL1) --> DLL1 (Instanciar e chamar DLL2)--> DLL2 Só que ao tentar usar uma função da DLL2 a partir da DLL1 da erro na compilação: C:\Dev-Cpp\mydll.cpp "too many arguments to function" Detalhe se eu tirar todos os parâmetros da função, funciona perfeitamente. Código Exemplo: *****Programa Principal******* #include <stdio.h> #include <conio.h> #include <windows.h> typedef void (WINAPI*cfunc)(); cfunc FuncaoTemp; int main() { HINSTANCE hLib=LoadLibrary("Project1.dll"); if (!hLib) { printf("error"); return 0; } FuncaoTemp=(cfunc)GetProcAddress((HMODULE)hLib, "OperandoInteiroPorReferencia"); int op1 = 10; int op2 = 5; int resultado = 0; FuncaoTemp(op1,op2,&resultado); printf("Valor Operando 1: %d \n",op1); printf("Valor Operando 2: %d \n",op2); printf("Valor Resultado: %d \n",resultado); FreeLibrary((HMODULE)hLib); getch(); } ****DLL-1******* #include "mydll.h" #include "stdio.h" #include <conio.h> #include <windows.h> typedef void (WINAPI *cfunc1)(); cfunc1 FuncaoTemp2; extern "C" __declspec(dllexport) void OperandoInteiroPorReferencia(int op1, int op2,int *res) { HINSTANCE hLib1=LoadLibrary("Project3.dll"); if (!hLib1) { printf("error"); FreeLibrary((HMODULE)hLib1); getch(); } FuncaoTemp2=(cfunc1)GetProcAddress((HMODULE)hLib1, "funcao1Fornecedor"); FuncaoTemp2(op1); //AQUI DA O ERRO DE COMPILAÇÃO, "too many arguments to function" /* SE EU RETIRAR O COMENTARIO DESTE BLOCO E COMENTAR O DE CIMA FUNCIONARÁ PERFEITAMENTE PORQUE A FUNCAO DESTE BLOCO ESTA DECLARADA SEM PARAMETROS FuncaoTemp2=(cfunc1)GetProcAddress((HMODULE)hLib1, "funcao2Fornecedor"); FuncaoTemp2(op1); */ FreeLibrary((HMODULE)hLib1); getch(); } ***.H da DLL-1*** #ifndef _MYDLL_H_ #define _MYDLL_H_ #include <stdio.h> extern "C" __declspec(dllexport) void OperandoInteiroPorReferencia(int param1, int op2,int *res); #endif ***DLL-2***** #include "dll.h" #include "stdio.h" extern "C" __declspec(dllexport) void funcao1Fornecedor(int op1, int op2,int *res) { printf("Funcao 1 Executada no Fornecedor \n"); //Operação com "int" retornando a referencia resultado *res = op1 + op2; printf("Valor Operando 1 na DLL : %d \n",op1); printf("Valor Operando 2 ma DLL: %d \n",op2); printf("Valor Res ma DLL: %d \n",*res); } extern "C" __declspec(dllexport) void funcao2Fornecedor() { printf("Funcao 2 Executada no Fornecedor \n"); } ***.H da DLL-2 **** #ifndef _DLL_H_ #define _DLL_H_ #include <stdio.h> extern "C" __declspec(dllexport) void funcao1Fornecedor(int param1, int op2,int *res); extern "C" __declspec(dllexport) void funcao2Fornecedor(); #endif Qualquer ajuda será válida Valeu!!!
×
×
  • Criar Novo...