Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Compilador C- C++

Iniciado por Ipis, 24 de Octubre de 2003, 01:14:57 AM

« anterior - próximo »

Ipis

 Me gustaría incluir en un proyecto de VC++ una librería(.dll) que está escrita en C.Ya la he vinculado,pero al compilar me da error:

C:\IMGLIB\ImgLib.lib : fatal error LNK1136: invalid or corrupt file

Necesitaría algún compilador especial?

Salu2  :rolleyes:  

CoLSoN2

 esa lib la has escrito tu o es bajada de algun sitio? si es asi, de donde?

P.D: propongo la creación de la campaña "Explique un poco más su problema antes de darle a 'Responder' " para un mejor funcionamiento del foro; viendo el panorama ultimamente.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Ipis

 Me la han pasado por email en formato comprimida...si te interesa o quieres echarle un vistazo puedo mandártela´.

Perdón si no me explico bien,pero es que no puedo explicar con más claridad algo que no entiendo..... tengo la librería,la descomprimo,la vinculo a mi proyecto en VC++,le añado el archivo "ImgLib.h" con la directiva #include y al compilar mi proyecto me sale el error que ya he posteado:

CitarC:\IMGLIB\ImgLib.lib : fatal error LNK1136: invalid or corrupt file

Sigo todos los pasos que me dice la ayuda para resolver el problema,pero sin resultados.Por eso he pensado que a lo mejor se debe a que no son compatibles C y C++ por sí solos y necesito un compilador especial
Espero que ahora se haya entendido mejor mi problema.....gracias por todo
;)  

Zaelsius

 Probablemente el formato de esa libreria(el .lib) no es compatible con tu compilador. El formato interno de los .lib suele ser diferente para cada familia de compiladores.

O sea, si ese .lib era para Dev-C++(por poner un ejemplo) no funcionará con VC++.

Edit:

Puedes intentar modificar el .h de la librería de esta forma:

extern "C"
{

...contenido del .h

}

Para indicar al compilador que la libreria contiene funciones de C. A lo mejor funciona, pero probablemente no :huh:  

Ipis

 Pos no funciona ;-((( pero se agradece el intento :D  

Geo

 Pues yo no he usado Visual C++, pero con Dev-C++ hago esto:

Si tengo una librería .dll (como mencionaste) que contiene por ejemplo, la función:

void HelloWorld(void);

Para usarla en mi programa hago esto:

#include <stdio.h>
__declspec (dllimport) void HelloWorld(void);

int main() {
 HelloWorld();
 return 0;
}

Luego, la librería la agrego a las opciones del enlazador, de esa forma no es necesario contar con la .a, .o o .lib (la que sea que use tu compilador), sólo basta con la .dll.

Creo que ya tengo que conseguirme Visual C++, ¿cuál me recomiendan: el 6 o el .NET?

Saludos,
José Jorge (Geo).
a vida que viene y yo me voy.

Grugnorr

 Si se exportan clases, las dlls son específicas del compilador(más bien de la marca).  
hat the hells!

Ipis

 
He probado lo que dices,Geo,pero sigue dándome error....gracias de todas formas  :rolleyes:

Yo tengo VC++ 6,pero no conozco el NET,así que no puedo decirte cuál es mejor

CitarSi se exportan clases, las dlls son específicas del compilador(más bien de la marca).

Qué significa eso exactamente??Que no puedo usar las clases de una librería escrita en C dentro de VC++???

Zaelsius

 
CitarQué significa eso exactamente??Que no puedo usar las clases de una librería escrita en C dentro de VC++???

:D  Recuerda que C no tiene soporte para clases... eso es C++  :rolleyes:  

Ipis

 Perdona,compañero...pero es que la neurona que me quedaba se ha dado de baja. ;) Gracias por el recordatorio






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.