Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2008, 06:12
tranete
 
Fecha de Ingreso: noviembre-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
ERROR al compilar con VISUAL STUDIO

Hola, hace poco he empezado a programar en C sobre el compilador Visual Studio 6.0 en Windows XP, y estoy utilizando la librería matemática NAG de métodos numéricos y estadísticos. La librería me la pasaron directamente como la distribución de carpetas siguiente:

/cldll054z : Carpeta raiz que contiene todo
in.txt : Installers' Note

/doc :
CL05_main.html : main HTML page
/dll :
nagc.dll : dynamic link library (optimized )
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
/include : *.h include files

/examples :
/source : archivos ejemplo *.c
/data : archivos de entrada *.d
/baseresults : archivos de resultados *.r
batch :
runex.bat : batch file to run example programs
vc_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:
/* 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);
}
Aunque sea largo creo que he sido bastante concreto, espero que alguien pueda ayudarme, un saludo y gracias por vuestra atención.