En Visual Basic obtengo: error 49

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

En Visual Basic obtengo: error 49

Notapor johndoe90 » Lun Abr 27, 2009 11:18 am

Hola, estoy intentando hacer un programa en VB a partir de una dll hecha con C++ en objetos. El programa consiste en introducir el nombre, uso de cpu y memoria de un proceso, y luego mostrarlo, todo va bien hasta que se le da a mostrar, entonces me sale el error 49: "La convencion de llamadas a DLL es incorrecta". Alguien sabria decirme donde esta el fallo?

Gracias.

Adjunto código.

CProcess.h

typedef char Tpalabra [20];

class CProcess
{
private:
Tpalabra imageName;
float cpuUsage;
int memUsage;

public:
CProcess();
void pon_imageName(Tpalabra name);
Tpalabra* dame_imageName();
void pon_cpuUsage(float cpu);
float dame_cpuUsage();
void pon_memUsage(int mem);
int dame_memUsage();
float valor_inicial_cpu();
int valor_inical_mem();
};

CProcess.cpp

#include "CProcess.h"
#include <string.h>

Tpalabra newProc;

CProcess::CProcess()
{
strcpy(imageName,newProc);
cpuUsage=0.0;
memUsage=0;
}

float CProcess::valor_inicial_cpu()
{
return cpuUsage;
}

int CProcess::valor_inical_mem()
{
return memUsage;
}


void CProcess::pon_imageName(Tpalabra name)
{
strcpy(imageName,name);
}

Tpalabra* CProcess::dame_imageName()
{
return (&imageName);
}

void CProcess::pon_cpuUsage(float cpu)
{
cpuUsage=cpu;
}

float CProcess::dame_cpuUsage()
{
return (cpuUsage);
}

void CProcess::pon_memUsage(int mem)
{
memUsage=mem;
}

int CProcess::dame_memUsage()
{
return (memUsage);
}

DLLCProcess.cpp

#include "Windows.h"
#include "CProcess.h"

CProcess my_Process;

void FAR PASCAL DLLpon_imageName(Tpalabra name)
{
my_Process.pon_imageName(name);
}

void FAR PASCAL DLLdame_imageName(Tpalabra name)
{
strcpy(name,*my_Process.dame_imageName());
}

void FAR PASCAL DLLpon_cpuUsage(float cpu)
{
my_Process.pon_cpuUsage(cpu);
}

float FAR PASCAL DLLdame_cpuUsage()
{
return my_Process.dame_cpuUsage();
}

void FAR PASCAL DLLpon_memUsage(int mem)
{
my_Process.pon_memUsage(mem);
}

int FAR PASCAL DLLdame_memUsage()
{
return my_Process.dame_memUsage();
}


CProcess.def

LIBRARY CProcess.dll
DESCRIPTION 'Dll CProcess'
HEAPSIZE 4024

EXPORTS
DLLpon_imageName @1
DLLdame_imageName @2
DLLpon_cpuUsage @3
DLLdame_cpuUsage @4
DLLpon_memUsage @5
DLLdame_memUsage @6


VB

Form 1

Option Explicit


Private Sub Command1_Click()
Dim name As String
Dim cpu As Single
Dim mem As Long

name = " "
name_in.Text = name
cpu_in.Text = cpu
mem_in.Text = mem

DLLpon_imageName (name)
DLLpon_cpuUsage (cpu)
DLLpon_memUsage (mem)
MsgBox "Datos introducidos correctamente"


End Sub

Private Sub Command2_Click()
Dim palabra As String
Dim cpuUsage As Single
Dim memUsage As Long
palabra = " "

DLLdame_imageName palabra
DLLdame_cpuUsage cpuUsage
DLLdame_memUsage memUsage

name_out.Text = palabra
cpu_out.Text = cpuUsage
mem_out.Text = memUsage

End Sub

Module1

Option Explicit

Public Declare Function DLLpon_imageName _
Lib "CProcess.dll" _
(ByVal name As String) _
As Long

Public Declare Function DLLdame_imageName _
Lib "CProcess.dll" _
(ByVal imageName As String) _
As Long

Public Declare Function DLLpon_cpuUsage _
Lib "CProcess.dll" _
(ByVal cpu As Single) _
As Long

Public Declare Function DLLdame_cpuUsage _
Lib "CProcess.dll" _
(ByVal cpuUsage As Single) _
As Long

Public Declare Function DLLpon_memUsage _
Lib "CProcess.dll" _
(ByVal mem As Long) _
As Long

Public Declare Function DLLdame_memUsage _
Lib "CProcess.dll" _
(ByVal memUsage As Long) _
As Long



PD: Hay alguna manera de no meter un codigo tan largo en un post? Comprimirlo o algo asi?
johndoe90
 
Mensajes: 5
Registrado: Jue Mar 05, 2009 11:04 pm

Notapor endaramiz » Lun Abr 27, 2009 7:23 pm

No creo que VB sea la mejor opción para aprender a programar videojuegos. Si no sabes C/C++ te aconsejo comenzar por Python+Pygame y si ya te manejas con soltura en C/C++, SDL.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor lacabra25 » Lun Abr 27, 2009 10:10 pm

endaramiz escribió:No creo que VB sea la mejor opción para aprender a programar videojuegos.


Endaramiz, creo que este tema no va precisamente de videojuegos, leeyo lenguajes y puso aqui el mensaje sin pensar que si el foro trataba sobre la programación de videojuegos lo mas apropiado era ponerlo en fuera de topico, es algo que puede pasar por error al principio. Si algun moderador o administrador del foro lee esto, por favor que elimine uno de los dos temas que estan duplicados y que mueva este, si se puede, a fuera de topico. También, Johndoe90, deberias de intentar ser algo más expresivo en el titulo del tema "error 49" no dice nada de que lenguaje es sobre el que consultas, ni bibliotecas ni en que te ha aparecido el error, la unica informacion que da es que es un error que tiene algo que ver con el numero 49; ya sea como codigo de error del compilador o interprete, de la biblioteca o a saber de que.
Esta cuenta ahora a pasado a la cuenta jhg
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado