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:
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.
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
;)
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:
Pos no funciona ;-((( pero se agradece el intento :D
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).
Si se exportan clases, las dlls son específicas del compilador(más bien de la marca).
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++???
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:
Perdona,compañero...pero es que la neurona que me quedaba se ha dado de baja. ;) Gracias por el recordatorio