/cldll054z : Carpeta raiz que contiene todo
in.txt : Installers' Note
/doc :CL05_main.html : main HTML page/dll :nagc.dll : dynamic link library (optimized )/include : *.h include files
nagc.lib : import library for DLL
nagcd.dll : dynamic link library (unoptimized)
nagcd.lib : import library for DLL
nagcd_bc.lib : import library for use with Borland C/C++ compiler
examples.dll : example programs DLL
examples.lib : import library
nagcvars.bat : batch file to set environment variables
DeIsL?.isu : uninstall information file
/examples :/source : archivos ejemplo *.cbatch :
/data : archivos de entrada *.d
/baseresults : archivos de resultados *.r
runex.bat : batch file to run example programsvc_support :/results : directory initially empty
nagcwin.exe : VC demonstration application to run example programs
sumres : empty file for use by nagcwin.exe
Es decir, que no me pasaron un CD con el setup o el instalador. Los pasos que he seguido para hacerla accesible a mi compilador han sido copiar la carpeta entera cldll054z en C:\Archivos de programa\Microsoft Visual Studio, después dentro del Visual Studio le he indicado al compilador las carpetas en las que tiene que buscar los archivos .h (C:\Archivos de programa\Microsoft Visual Studio\cldll054z\include), y los archivos .dll o .lib (C:\Archivos de programa\Microsoft Visual Studio\cldll054z\dll). Esto lo hice en la pestaña Tools -> Options -> Directories dentro de Visual Studio. También he copiado los tres archivos .dll que trae la librería en C:\WINDOWS\system32, para que no de errores en tiempo de ejecución.
Esto que he hecho no debe estar del todo mal, pues he probado varios programas de ejemplo de la librería, y compilan y se ejecutan dando siempre el resultado correcto, luego mi compilador está utilizando bien la librería. El problema que tengo es que en todos los programas siempre me sale el mismo WARNING al compilar, y no soy capaz de resolverlo, es el siguiente:
--------------------Configuration: s15aece - Win32 Debug--------------------
Compiling...
s15aece.c
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\nag\s15aece\s15aece.c(16) : warning C4273: 's15aec_ex' : inconsistent dll linkage. dllexport assumed.
s15aece.obj - 0 error(s), 1 warning(s)
Siendo el código del programa el siguiente:
Código:
Aunque sea largo creo que he sido bastante concreto, espero que alguien pueda ayudarme, un saludo y gracias por vuestra atención. /* nag_erf(s15aec) Example Program * * Copyright 1990 Numerical Algorithms Group. * * Mark 1, 1990. */ #include <nag.h> #include <nagex_dll.h> #include <stdio.h> #include <nag_stdlib.h> #include <nags.h> int NAG_CALL s15aec_ex(char *datafile, char *resfile) { double x, y; FILE *fp_in, *fp_out; char buf[100]; if (!(fp_in = fopen(datafile,"r"))) { wsprintf((LPSTR)buf, "Unable To Open Input File: %s", (LPSTR)resfile); MessageBox(0, (LPSTR)buf, "", MB_OK); return -1; } if (!(fp_out = fopen(resfile,"w"))) { wsprintf((LPSTR)buf, "Unable To Open Output File: %s", (LPSTR)resfile); MessageBox(0, (LPSTR)buf, "", MB_OK); fclose(fp_in); return(0); } /* Skip heading in data file */ Vfscanf(fp_in,"%*[^\n]"); Vfprintf(fp_out,"s15aec Example Program Results\n"); Vfprintf(fp_out," x y\n"); while (fscanf(fp_in,"%lf", &x) != EOF) { y = s15aec(x); Vfprintf(fp_out,"%12.3e%12.3e\n", x, y); } fclose(fp_in); fclose(fp_out); return(0); } main() { char fich_datos[11] = "s15aece.d"; char fich_salida[11] = "datos.dat"; s15aec_ex(fich_datos,fich_salida); return(0); }