Subido por carlosenrique101165

Convertir algún código de C ++ a C C++

Anuncio
C++ /
c ++
windows
/ Convertir algún código de C ++ a C
Convertir algún código de C ++ a C
Intereting Posts
Cómo usar qsort para cadena en C
++
impulsar shared_from_this ()
En c ++, cómo traducir un punto
unido a otro en el espacio 3D de
acuerdo con las rotaciones del
cuaternión más recientes
Push_back causando un error al usar
These Wonders Happen To Your Body If You Start Consuming Two Eggs A
vectores en C ++
Day
Convertir QDate a Qstring?
El inspector de código de QtCreator
se rompe cuando uso la marca
-isistema en lugar de INCLUDEPATH
¿Cuáles son las unidades y límites de
la magnitud del gradiente?
¿Cómo leo una línea de tubería FIFO
/ nombrada línea por línea desde
una aplicación de C ++ / Qt Linux?
Posible duplicado:
El código C se comstack como C ++, pero no como C
Editar:
Recopilé la fuente de la biblioteca como C, y eso lo arregló.
Tengo este código que necesito usar en mi aplicación. Es para escribir en el puerto serie,
y no puedo descubrir cómo ejecutarlo en C. Tengo una versión en C ++, así como una
versión que se parece más a C, diseñada para comstackr con el Borland Comstackdor C
++ 5.5, pero no puedo comstackrlo allí o en mi proyecto.
Edit: Debo tener en cuenta que comstack (y enlaza) cuando compilo como c ++, pero no
cuando compilo como c.
Aquí está el error del enlazador que recibo:
1>InpoutTest.obj : error LNK2019: unresolved external symbol _Out32@8 referenced
in function _main 1>InpoutTest.obj : error LNK2019: unresolved external symbol
_Inp32@4 referenced in function _main
Aquí está el código c ++. No necesito la funcionalidad de línea de comandos, solo
necesito poder llamar a Out32 (). Ni siquiera necesito ser capaz de leer.
#include "stdafx.h" #include "stdio.h" #include "string.h" #include "stdlib.h"
/* ----Prototypes of Inp and Outp--- */ short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);
/*--------------------------------*/ int main(int argc, char* argv[]) { int data;
if(argc<3) { //too few command line arguments, show usage printf("Error : too few
arguments\n\n***** Usage *****\n\nInpoutTest read
\nor \nInpoutTest write
\n\n\n\n\n"); } else if(!strcmp(argv[1],"read")) { data = Inp32(atoi(argv[2]));
printf("Data read from address %s is %d \n\n\n\n",argv[2],data); } else
if(!strcmp(argv[1],"write")) { if(argc<4) { printf("Error in arguments
supplied"); printf("\n***** Usage *****\n\nInpoutTest read
\nor \nInpoutTest write
\n\n\n\n\n"); } else { Out32(atoi(argv[2]),atoi(argv[3])); printf("data written
to %s\n\n\n",argv[2]); } } return 0; }
Aquí está la otra muestra:
#include
#include
#include
/* Definitions in the build of inpout32.dll are:
*/ /* short _stdcall Inp32(short PortAddress); */ /* void _stdcall Out32(short
PortAddress, short data); */ /* prototype (function typedef) for DLL function
Inp32: */ typedef short _stdcall (*inpfuncPtr)(short portaddr); typedef void
_stdcall (*oupfuncPtr)(short portaddr, short datum); int main(void) { HINSTANCE
hLib; inpfuncPtr inp32; oupfuncPtr oup32; short x; int i; /* Load the library */
hLib = LoadLibrary("inpout32.dll"); if (hLib == NULL) { printf("LoadLibrary
Failed.\n"); return -1; } /* get the address of the function */ inp32 =
(inpfuncPtr) GetProcAddress(hLib, "Inp32"); if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n"); return -1; } oup32 = (oupfuncPtr)
GetProcAddress(hLib, "Out32"); if (oup32 == NULL) { printf("GetProcAddress for
Oup32 Failed.\n"); return -1; }
/***************************************************************/ /* now test the
functions */ /* Try to read 0x378..0x37F, LPT1: */ for (i=0x378; (i<0x380); i++)
{ x = (inp32)(i); printf("port read (%04X)= %04X\n",i,x); } /***** Write the data
register */ i=0x378; x=0x77; (oup32)(i,x); printf("port write to 0x%X,
datum=0x%2X\n" ,i ,x); /***** And read back to verify */ x = (inp32)(i);
printf("port read (%04X)= %04X\n",i,x); /***** One more time, different value */
i=0x378; x=0xAA; (oup32)(i,x); printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);
/***** And read back to verify */ x = (inp32)(i); printf("port read (%04X)=
%04X\n",i,x); FreeLibrary(hLib); return 0; }
Cualquier ayuda sería apreciada.
• Obtener la dirección del objeto de clase de plantilla conduce a una instanciación
completa de los parámetros de plantilla
• ¿Cómo exporto funciones de clase, pero no toda la clase en una DLL?
• Cómo acceder al destino de std :: tr1 :: shared_ptr en GDB
• ¿Cómo iniciar otro progtwig sin tener que esperar en C ++?
• Función miembro de C ++ anulación virtual y sobrecarga al mismo tiempo
© 2017 C++ Topics Terms Privacy Policy
Es posible que deba envolver los prototipos de Inp32 / Outp32 con “extern C {/ * …
* /}”.
Este código parece que está leyendo / escribiendo el puerto de la impresora, no el
puerto serie. Lo está haciendo al cargar alguna DLL que le da acceso directo al
hardware. Para que funcione, deberá usar la misma DLL (o similar). Desde el punto
de vista de las cosas, está usando Inpout32.dll , por lo que conseguir eso podría ser
útil.
Tuve que recomstackr la biblioteca como C, luego usar esa versión. La versión
existente fue comstackda como C ++.
• Visual Studio 2013: CL.exe salió con el código -1073741515
• QTableWidget: Sólo números permitidos
• ¿Cómo verificar si el parámetro de plantilla de la función tiene un tipo determinado?
• ¿Por qué siempre me “termina la llamada después de lanzar una instancia de …” al lanzar mi destructor?
• ¿Está garantizado que std :: array es POD si T es POD?
• Enlace de archivos (.a) en objeto compartido (.so)
• Clases de envoltorio para tipos de datos primitivos
• ¿Cómo se almacenan los enteros en la memoria?
• ¿QMessageBox bloqueará la ejecución de todo el hilo principal en Qt?
• Elemento en el índice en un std :: set?
• terminar llamado después de lanzar una instancia de ‘cl :: sycl :: detail :: exception_implementation ‘
Descargar