[C con Clase] LIBRERÍA IMSL

Steven Davidson srd4121 en njit.edu
Lun Jun 30 19:45:52 CEST 2008


Hola Víctor Hugo,

Victor Hugo Andaluz Ortiz wrote:
> HOLA..
> estoy utilizando Visual C++ 6.0 y la IMSL(R) es C Numerical Library 
> Version 6.0
> Lo que estoy haciendo es correr un ejemplo de la librería IMSL, el 
> ejemplo es:
> 
> 

Veamos el código fuente.

> ****************
> ***************
> // prueb3isml.cpp : Defines the entry point for the application.
> //
> #include "stdafx.h"
> #include <stdio.h>
> #include <imsl.h>
> #include <math.h>
> 
> Main()

Esto es incorrecto. Debería ser:

int main()

Entiendo que el ejemplo viene así:

main()

Sin embargo, esto ya no es aceptable, ni siquiera en ANSI C.

> {
> 
> int n = 3;
> float *x;
> float a[] = {1.0, 3.0, 3.0,
>              1.0, 3.0, 4.0,
>              1.0, 4.0, 3.0};
> float b[] = {1.0, 4.0, -1.0};
> 
> 
> /* Solve Ax = b for x */
> 
> x = imsl_f_lin_sol_gen (n, a, b, 0);
> 
> /* Print x */
> 
> imsl_f_write_matrix ("Solution, x, of Ax = b", 1, 3, x, 0);
> 

Como hemos escrito 'int main()', debemos retornar un valor entero. Por 
convenio, este valor es 0 (cero); o sea,

return 0;

> }
> 
> 
> *****************
> *****************
> y como resultado me da lo siguiente:
> 
> Deleting intermediate files and output files for project 'prueb3isml
> - Win32 Release'.
> --------------------Configuration: prueb3isml - Win32 
> Release--------------------
> Compiling...
> StdAfx.cpp
> Compiling...
> prueb3isml.cpp
> C:\Archivos de programa\Microsoft Visual 
> Studio\MyProjects\prueb3isml\prueb3isml.cpp(27) : warning C4508:
> 'Main' : function should return a value; 'void' return type assumed

Esto tiene que ver con el hecho de no indicar un tipo de retorno de la 
función.

> Linking...
> prueb3isml.obj : error LNK2001: unresolved external symbol 
> _imsl_f_write_matrix
> prueb3isml.obj : error LNK2001: unresolved external symbol 
> _imsl_f_lin_sol_gen

Estos errores se deben seguramente a que no has agregado la biblioteca 
de ISML a tu proyecto. Busca el fichero de la biblioteca; seguramente es 
"imsl.lib" o algo por el estilo. Agrega tal biblioteca al proyecto de 
VC++. Esto sirve para indicar al enlazador qué biblioteca usar.

> LIBC.lib(wincrt0.obj) : error LNK2001: unresolved external symbol 
> _WinMain en 16

Esto se resolverá cuando escribas 'main()' y no 'Main()'. Si no 
cometiste este error, entonces asegúrate de que has creado un proyecto 
para la consola y no una aplicación GUI para MS-Windows.


Espero que esto te ayude.

Steven





Más información sobre la lista de distribución Cconclase