elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dll para usar con programas c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dll para usar con programas c++  (Leído 605 veces)
Rafa121

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Dll para usar con programas c++
« en: 30 Noviembre 2015, 10:38 am »

Hola, buenas soy nuevo en el foro y me gustaría que alguien me echase una mano, ya que llevo bastantes dias con este tema y por mucho que miro en internet no consigo solucionarlo.

Quiero hacer una dll y poder acceder a ella desde otro programa c++. El codigo de la dll compila sin ningún problema, arrojando un fichero .lib

Cuando hago el codigo del programa que va utilizar la dll en la configuración pongo en el include el .h del programa de la dll y en la libreria el .lib. Al compilarlo me da el siguiente error y no se a que puede ser debido.

error LNK2019: símbolo externo "__declspec(dllimport) public: void __thiscall Imprimir::Imprime(char *)" (__imp_?Imprime@Imprimir@@QAEXPAD@Z) sin resolver al que se hace referencia en la función "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)

Espero haberme explicado bien. A continuación pongo el codigo que tengo en cada uno de los dos programas

ProyectoDLL.h

#ifndef _ProyectoDLL_H_
#define _ProyectoDLL_H_

#include <Windows.h>

#ifdef PROYECTODLL_EXPORTS
#define EXPORT_API __declspec(dllexport)
#else
#define EXPORT_API __declspec(dllimport)
#endif

class EXPORT_API Imprimir
{
public:
 void Imprime(char *texto);
};

#endif

ProyectoDll.cpp

#include "stdafx.h"
#include <iostream>
#include "ProyectoDLL.h"
using namespace std;

void Imprimir::Imprime(char *texto)
{
 cout << texto << endl;
}

 
y en el proyecto donde voy a usar la dll

PruebaDll.cpp

#include <stdio.h>
#include <ProyectoDLL.h>
using namespace std;

HWND hWnd;
HINSTANCE hInst;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
 static TCHAR szWindowClass[] = TEXT("Win32app");
 static TCHAR szTitle[] = TEXT("Titulo de la Aplicación");

.....
.....
.....

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 Imprimir *imprimir = new Imprimir();
 switch (message)
 {
 case WM_KEYDOWN:
 imprimir->Imprime("pepe");
 break;
 case WM_QUIT:
 DestroyWindow(hWnd);
 break;
 case WM_DESTROY:
 PostQuitMessage(0);
 break;
 default:
 return DefWindowProc(hWnd, message, wParam, lParam);
 }

return 0;
}

Muchas gracias por vuestra atención. Saludos


En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Dll para usar con programas c++
« Respuesta #1 en: 1 Diciembre 2015, 01:29 am »

creo que es porque se esta manejando la dll como una libreria estatica y no dinamica

aca un ejemplo del proceso
https://darkchicles.wordpress.com/2011/07/18/crear-dll-con-devc/


En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines