• Sábado 10 de Mayo de 2025, 00:32

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - rfog

Páginas: 1 ... 3 4 [5] 6 7
101
Visual C++ / Re: Compilar este proyecto como dll
« en: Lunes 29 de Marzo de 2010, 10:33 »
Bueno, pues ahora, siguiendo los pasos descritos en los enlaces que te he puesto más arriba, tienes que "exportar" todas y cada una de las funciones públicas que aparezcan en "NvTriStrip.h", o bien crearte tu un nuevo juego de funciones que llamen a las de ese fichero cabecera.

En este momento la DLL está vacía porque no hay nada exportado, y el optimizador del linker lo limpia todo.

102
Visual C++ / Re: Compilar este proyecto como dll
« en: Lunes 1 de Marzo de 2010, 14:17 »
Cita de: "jor1980"
Creéis que es algo que pueda hacer sin conocimientos de c++ sólo con la orientación de un buen tutorial?

No mucho, pero...

http://geeks.ms/blogs/rfog/archive/2009 ... tar-i.aspx
http://geeks.ms/blogs/rfog/archive/2010 ... ar-ii.aspx

Tengo prevista una tercera parte sobre cómo crear DLL en C y C++, pero todavía no la he hecho.

Eso mío, una simple búsqueda en google me da:
http://www.duamu.com/re/manual/1728/id/ ... con-c.html

No es muy bueno, pero de algo te servirá.

103
Visual C++ / Re: Compilar este proyecto como dll
« en: Sábado 27 de Febrero de 2010, 19:48 »
Tienes que hacer un envoltorio compatible a esa biblioteca o bien cambiar todas las definiciones de las funciones públicas para que sean compatibles con la exportación de una DLL.

Create una DLL vacía con el asistente de Visual Studio y tendrás una idea de cómo es el formato.

104
Visual C++ / Re: error C2146: error de sintaxis
« en: Martes 2 de Febrero de 2010, 15:25 »
Joer, el propio error te lo dice: te falta el punto y coma en la línea de arriba:

 hInstance = ((LPCREATESTRUCT)lParam)->hInstance

El parser espera un punto y coma pero se encuentra un identificador...

105
C/C++ / Re: invalid digit "8" in const octal
« en: Martes 2 de Febrero de 2010, 13:14 »
Por cierto, ese switch se puede simplificar/mejorar con un simple if o mejor aún, con una tabla:

int diasMes[]={31,28,31...};

Y luego

int dias=diasMes[mes];

106
C/C++ / Re: invalid digit "8" in const octal
« en: Martes 2 de Febrero de 2010, 13:11 »
No se puede desactivar, es una característica del lenguaje.

Si quieres tener todos los números "igualicos", usa la notación hexadecimal:

0x01, 0x02, ... 0x09, 0x0a, 0x0b, 0x0c,... 0x0f, 0x10, ...

107
Visual C++ / Re: Mensaje de un hilo a otro
« en: Martes 26 de Enero de 2010, 15:23 »
Amoavé...

¿En qué estás haciéndolo? ¿MFC, Win32, C++/CLI (Windows Forms)?

Porque ese bucle lo tienes que tener, o bien a la vista o bien oculto por MFC...

En ambos casos, debes responder a ese WM_USER+30, que por cierto podrías hacerte un define) en el bucle de mensajes. En MFC tienes que añadirte un evento al estilo de

   ON_MESSAGE(WM_USER_DEVICE_READY,&CTestEVODlg::OnDeviceReady)
   ON_MESSAGE(WM_USER_DATA_VALID,&CTestEVODlg::OnDataValid)
   ON_MESSAGE(WM_USER_RETRYPAY,&CTestEVODlg::OnRetryEscalator)
   ON_MESSAGE(WM_USER_ERROR,&CTestEVODlg::OnError)

Y en Win32 simplemente capturar el mensaje en el bucle.

Y por supuesto que no se te olvide usar el HWND correcto cuando envíes el mensaje.

Por cierto, esta es la forma "oficial" de comunicar entre hilos de una misma aplicación.

108
Visual C++ / Re: usar una dll en visual c++
« en: Miércoles 13 de Enero de 2010, 10:52 »
Anda que el mensaje no es descriptivo ni nada: estás usando código C++/CLI (.NET) en el DllMain de la DLL y eso no se puede hacer.

109
Visual C++ / Re: el segundo send no llega
« en: Martes 12 de Enero de 2010, 13:54 »
No lo entiendo.

¿Qué significa "Y si al servidor le pongo control de errores ni eso" mezclado con "El programa servidor viene con un su cliente (que tengo que emular)"? Es decir, ¿Cómo puedes ponerle "control de errores" al servidor si lo que tienes que emular es el cliente?

¿Compruebas los valores devueltos por send? ¿Cierra el servidor el socket con cada envío? ...

110
Visual C++ / Re: crear funcion conectar
« en: Viernes 8 de Enero de 2010, 10:14 »
en main:

int cliente=conectar(....);
send(cliente,...);

El "cliente" de conectar se va de ámbito cuando retornas de conectar, pero como lo devuelves como valor de retorno, lo puedes obtener de la manera que te digo.

111
Visual C++ / Re: usar api windows con visual c++ 2008 .net
« en: Jueves 24 de Diciembre de 2009, 13:23 »
Muchos errores estás cometiendo, muchos.

El primero es que estás usando cadenas ANSI cuando tienen que ser UNICODE (lee aquí un hilo no muy lejano en el que hablo del tema).

El segundo es que estás sobreescribiendo memoria. Esos strcpy no valen: tienes que crearte tu cadena y apuntar a ella con el puntero de la estructura.

El tercero, te falta añadir sellapi.lib en las opciones del enlazador.

El cuarto, no necesitas declarar un puntero a la estructura, anque como lo haces vale, pero no te olvides luego de liberarla con delete.

112
Visual C++ / Re: usar api windows con visual c++ 2008 .net
« en: Martes 22 de Diciembre de 2009, 20:06 »
Cita de: "killerghosts"
primero gracias por tu contestacion, hice lo que me dijiste inclui las librerias siguientes:
#include <shell32.lib>
#include <windows.h>
#include <shellapi.h>


y el error que me da ahora al compilar es el siguiente:

fatal error C1083: No se puede abrir el archivo incluir: 'shell32.lib': No such file or directory

bueno y cuando soluciones esto, realmente podre utilizar funciones de la api de windows, y funciones .net ?? conjuntamente, por cierto ya se que soy un pesao, me gustaria acceder al hardware, del ordenador puerto paralelo, etc memoria eso se puede hacer, c++ y desde msdos era muy facil incluso utilizaba codigo ensamblador sin problemas en visual c++ 2008 se podria joder no me queda respiracion es broma muchas gracias

Madremía, qué chorro preguntas sin puntuación y sin nada...

Te falta la ruta a shell32.lib. Supongo que ese fichero lo habrás puesto en las opciones del enlazador, no en un include.

A) Puedes usar funciones .NET y nativas si activas la opción /CLR del compilador (o creas un proyecto del tipo CLR).
B) No puedes acceder al hardware desde Win32, no sin un driver específico.
C) El acceso al puerto paralelo se hace con "CreateFile" pasando el nombre del puerto en lugar de un fichero.
D) A memoria no puedes acceder, ni siquiera directamente a una dirección virtual del espacio de direcciones de tu aplicación, menos aún al físico real.

113
Visual C++ / Re: usar api windows con visual c++ 2008 .net
« en: Martes 22 de Diciembre de 2009, 09:52 »
Claro que puedes, pero como somos adivinos y tenemos la bola de cristal recién recargada puedo decirte que lo más seguro es que se te haya olvidado de incluir el fichero shellapi.h y la biblioteca de importación shell32.lib...

Eso o nos pones el error que te da y vemos qué está pasando...

114
Visual C++ / Re: VC2005
« en: Viernes 4 de Diciembre de 2009, 13:36 »
Tienes que cambiar el modo de compilación de Unicode a ANSI, lo que se hace en las opciones del proyecto -> General -> Character Set -> Not Set.

115
Otros CLR / Re: instruccion de espera Visual c++
« en: Martes 1 de Diciembre de 2009, 16:44 »
Cita de: "marodal"
Aver, si estoy usando Microsoft Visual C++ 2008, como que es .NET?? Si no uso el Visual Studio .NET??

Si me lo pudieras resumir en un par de frases, asi no daria mas la lata con confusiones!!
Gracias

Visual C++ 2008 trae cinco juegos diferentes de proyectos:
-ATL, para C++ nativo y ATL, una biblioteca de plantillas para facilitar la creación de controles COM y ActiveX
-CLR, para crear aplicaciones en Windows Forms y en C++/CLI.
-MFC, para C++ nativo y MFC.
-Smart Device, C++ nativo para Windows Mobile y CE, MFC, Win32 y ATL
-Test: para Test Units y demás.
-Win32, para C/C++ nativo, Win32 puro y duro.

Si has elegido alguno de CLR o luego has activado la opción /CLR, tienes una aplicación C++/CLI.

116
Otros CLR / Re: instruccion de espera Visual c++
« en: Martes 1 de Diciembre de 2009, 15:27 »
Cita de: "marodal"
No es .NET!!!!
Es Microsoft Visual C++ 2008 Express Edition

Sí que es .NET, es C++/CLI, que es el C++ del .NET:

http://geeks.ms/blogs/rfog/archive/2009 ... c-cli.aspx

Siendo C++/CLI, prueba con Thread::Sleep(<ms>); añadiendo la referencia necesaria si no la tienes ya.

117
Visual C++ / Re: ón
« en: Lunes 30 de Noviembre de 2009, 13:50 »
Los parámetros no sé si son correctos o no, creo que sí, y claro que se puede abrir así el puerto paralelo. Es la forma oficial de hacerlo.

118
Visual C++ / Re: ón
« en: Lunes 30 de Noviembre de 2009, 12:12 »
Pon el "COM1" también rodeado con la macro _T.

Para ajustar los timeouts y retardos del puerto, tienes la función SetCommTimeouts()

http://msdn.microsoft.com/en-us/library/aa363437(VS.85).aspx

Y dependiendo de la velocidad y de lo precisa que sea la placa que estés usando, el conversor RS232 a USB te funcionará o no. También depende del chip que tenga el conversor.

De todos modos, venden placas PCI y PCIe con puertos serie reales. Las hay hasta de 256 puertos, aunque lo habitual es 2 serie y uno paralelo.

119
Visual C++ / Re: ón
« en: Domingo 29 de Noviembre de 2009, 15:16 »
A partir de Windows XP el juego de caracteres por defecto es Unicode, antes era ANSI.

Cuando compilas con el otro, estás forzando a windows a traducir internamente uno por otro, así que podrías volver a ponerlo en Unicode y declarar tus variables agnósticas en cuanto a charset:

TCHAR miCadena[];

en lugar de

char miCadena[];

const TCHAR *pChar=_T("Hola mundo");

en lugar de

const char *pChar="Hola mundo";

De ese modo las cadenas mutarán en UNICODE o en ANSI según el juego de caracteres que uses en tiempo de compilación en lugar de en tiempo de ejecución, y encima tu aplicación será portable.

120
Visual C++ / Re: ón
« en: Sábado 28 de Noviembre de 2009, 13:40 »
¿Te está enseñando algún profe? Si es así, cambia inmediatamente de centro.

Para leer/escribir en puerto serie desde Win32 se hace con CreateFile para abrir el puerto, WriteFile y ReadFile para escribir y leer. Mira la documentación de Visual C++ 2008...

121
C/C++ / Re: ¿Cómo puedo interrumpir a Sleep()?
« en: Sábado 28 de Noviembre de 2009, 11:39 »
Create un evento con CreateEvent(). Luego, en lugar de hacer un Sleep() haces un WaitForSingleObject() sobre el evento, y cada vez que quieras despertar al hilo, haces una llamada a SetEvent() con el handle del evento y el hilo se despertará.

122
Otros CLR / Re: crear variable float
« en: Jueves 26 de Noviembre de 2009, 16:43 »
Más que borde, bordísimo, je je.

Si quieres completarte en C++ en cuanto a tecnologías Microsoft, debes darle un tiento al C++/CLI.

Claro que se pueden mezclar ambos, pero hay restricciones en cuanto a la interoperación entre los datos nativos y manejados. Hazte cuenta de que hay dos pilas y dos montículos completamente independientes y que sólo los datos básicos son compatibles entre su mismo tipo (y lo que hace el runtime es irlos copiando de una pila a la otra). El mayor problema de interoperabilidad "total" es el recolector de basura del .NET, y en su momento dijeron que harían algo para mejorarla (como objetos proxy entre ambos) pero de momento no hay nada nuevo.

123
Otros CLR / Re: crear variable float
« en: Jueves 26 de Noviembre de 2009, 16:00 »
Ya te lo he puesto yo en mi respuesta.

Y en los foros de Microsoft the he dado otra posible respuesta, y aun te voy a dar otra más:

Create una referencia a un float, inicialízala con gcnew, pinneala con pin_ptr y y escribe directamente sobre ella con desplazamientos.

Si la línea de arriba te suena a chino, antes de seguir, aprende C++/CLI.

124
Visual C++ / Re: DAO CON VISUAL C++
« en: Jueves 26 de Noviembre de 2009, 13:10 »
No entiendo de bases de datos, pero imagino que alguna de esas funciones de acceso mediante DAO devolverá algún tipo de error o de condición que te va a decir por qué se devuelven datos vacíos...

125
Otros CLR / Re: crear variable float
« en: Jueves 26 de Noviembre de 2009, 13:08 »
Pon los cuatro bytes en una unión:

union Nombre
{
 unsigned char asByte[4];
float asFloat;
};

Luego escribe como si fueran bytes y lee como si fuera un float.

O lo mismo pero sin la unión:

unsigned char bytes[4];
float *f=(float *)bytes;

Páginas: 1 ... 3 4 [5] 6 7