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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / 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
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines