当前位置:编程学习 > C#/ASP.NET >>

vs2005中调试信息不匹配问题?

我建立一个win32控制台下的dll,编译通过了生成了dll,但是调用的时候提示,找不到调试信息或者调试信息不匹配,没有生成二进制信息文件的错误
不知道为什么啊?我的dll都是用c写的,没有mfc的任何东西啊
--------------------编程问答-------------------- 我是建立的控制台dll的空项目,自己添加的。c文件和。h文件,在没有别的了。
--------------------编程问答-------------------- 源代码发上来看看,估计是导出头没写好 --------------------编程问答-------------------- 关注下 --------------------编程问答--------------------
。c函数内容如下:
#include "mdi_c.h"
#include "math.h"
#define M 8388608 
#define T 2045
double MYRAND( double l )
{
double x,r,k,y,x1,x0;
int j,i;
x0=1;
x1=1;
for(j=0;j<l;j++)
{
k=0;
for( i=0;i<12;i++)
{
  x=fmod(T*x0,M);
r=x/M;
x0=x;
k=r+k;
}
  y=fmod(T*x1,M);
x1=y;
x0=x1;
}
return(k-6);                       
}
void vc_initialize_user()
{
vc_function_add("MYRAND", (FUNCTION)MYRAND, fn_R_R,1,0);
}
--------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 很笨,不会发附件,头文件很长,只能一部分的发了,部分1:
/*
 ****PreView Module: %W% %G%
 */
#ifndef MDI_C_H
#define MDI_C_H 1
/*--------------------------------------------------------------------------*/

#if !(defined(__hpux) || defined(_AIX) || defined(vax) || defined(_WIN32) || defined(WIN32) || defined(_X86_))
# define vc_initialize_user vc_initialize_user_
#endif

#if defined(WIN32) || defined(_WIN32)
#  define vc_initialize_user __declspec(dllexport) vc_initialize_user
#endif


#ifdef __cplusplus
extern "C" {
#endif

/*----------------------------------------------------------------------------*/
/*--  NOTE:  You cannot create a new function type merely by adding entries --*/
/*--  to this table.  When this table is changed other changes must be      --*/
/*--  incorporated into the expression subsystem.                           --*/
/*----------------------------------------------------------------------------*/

typedef enum {
                /* Result  Par 1    Par 2    Par 3    Par 4    Par 5 */

_fn_Rstart = 100,
   fn_R_,       /* REAL    -        -        -        -        -     */
   fn_R_R,      /* REAL    REAL     -        -        -        -     */
   fn_R_RR,     /* REAL    REAL     REAL     -        -        -     */
   fn_R_RRR,    /* REAL    REAL     REAL     REAL     -        -     */
   fn_R_i,      /* REAL    int      -        -        -        -     */
   fn_R_s,      /* REAL    char *   -        -        -        -     */
   fn_R_k,      /* REAL    KEY      -        -        -        -     */
   fn_R_kk,     /* REAL    KEY      KEY      -        -        -     */
   fn_R_kkk,    /* REAL    KEY      KEY      KEY      -        -     */
   fn_R_a,      /* REAL    array    -        -        -        -     */
   fn_R_aa,     /* REAL    array    array    -        -        -     */
   fn_R_aR,     /* REAL    array    REAL     -        -        -     */
   fn_R_sR,     /* REAL    char *   REAL     -        -        -     */
   fn_R_ksRRRR, /* array   KEY      char *   REAL     REAL     REAL    REAL  */
   fn_R_ss,     /* REAL    char *   char *   -        -        -     */
   fn_R_aaR,    /* REAL    array    array    REAL     -        -     */
   fn_R_sss,    /* REAL    char *   char *   char *                  */
   fn_R_ii,     /* REAL    int      int      -        -        -     */
   fn_R_kR,     /* REAL    KEY      REAL                             */
   fn_R_kkRR,   /* REAL    KEY      KEY      REAL     REAL           */
   fn_R_ki,     /* REAL    KEY      int      -        -        -     */
   fn_R_sRR,    /* REAL    char *   REAL     REAL     -        -     */
   fn_R_kkis,   /* REAL    KEY      KEY      int      char *   -     */
_fn_Rend   = 199,
                /* Result  Par 1    Par 2    Par 3    Par 4    Par 5 */
_fn_sstart = 200,
   fn_s_,       /* char *  -        -        -        -        -     */
   fn_s_s,      /* char *  char *   -        -        -        -     */
   fn_s_ss,     /* char *  char *   char *   -        -        -     */
   fn_s_sss,    /* char *  char *   char *   char *   -        -     */
   fn_s_i,      /* char *  int      -        -        -        -     */
   fn_s_si,     /* char *  char *   int      -        -        -     */
   fn_s_ssi,    /* char *  char *   char *   int      -        -     */
   fn_s_sii,    /* char *  char *   int      int      -        -     */
   fn_s_R,      /* char *  REAL     -        -        -        -     */
   fn_s_k,      /* char *  KEY      -        -        -        -     */
   fn_s_ks,     /* char *  KEY      char *   -        -        -     */
   fn_s_ssss,   /* char *  char *   char *   char *   char *   -     */
   fn_s_a,      /* char *  array    -        -        -        -     */
   fn_s_sa,     /* char *  char *   array    -        -        -     */
   fn_s_sR,     /* char *  char *   REAL     -        -        -     */
_fn_send   = 299,
                /* Result  Par 1    Par 2    Par 3    Par 4    Par 5 */
_fn_istart = 300,
   fn_i_,       /* int     -        -        -        -        -     */
   fn_i_i,      /* int     int      -        -        -        -     */
   fn_i_ii,     /* int     int      int      -        -        -     */
   fn_i_iii,    /* int     int      int      int      -        -     */
   fn_i_R,      /* int     REAL     -        -        -        -     */
   fn_i_s,      /* int     char *   -        -        -        -     */
   fn_i_ss,     /* int     char *   char *   -        -        -     */
   fn_i_sss,    /* int     char *   char *   char *   -        -     */
   fn_i_ssss,   /* int     char *   char *   char *   -        -     */
   fn_i_k,      /* int     KEY      -        -        -        -     */
   fn_i_kk,     /* int     KEY      KEY      -        -        -     */
   fn_i_kkk,    /* int     KEY      KEY      KEY      -        -     */
   fn_i_ks,     /* int     KEY      char *   -        -        -     */
   fn_i_a,      /* int     array    -        -        -        -     */
   fn_i_aR,     /* int     array    REAL     -        -        -     */
   fn_i_si,     /* int     char *   int      -        -        -     */
   fn_i_ssi,    /* int     char *   char *   int      -        -     */
   fn_i_as,     /* int     array    char *   -        -        -     */
   fn_i_sssssi, /* int     char *   char *   char *   char *   char * int */
   fn_i_ksii,   /* int     KEY      char *   int      int      -     */
   fn_i_sR,     /* int     char *   REAL     -        -        -     */
   fn_i_ka,     /* int     key      array                            */
   fn_i_kssi,   /* int     key      char *   char *   int            */
   fn_i_kss,    /* int     key      char *   char *                  */
   fn_i_aaRRi,  /* int     array    array    REAL     REAL     int   */
   fn_i_Rii,    /* int     REAL     int      int                     */
   fn_i_kssssi, /* int     KEY      char *   char *   char *   char * int */
   fn_i_ki,     /* int     key      int                              */
   fn_i_kR,     /* int     key      REAL                             */
   fn_i_kiiis,  /* int     KEY      int      int      int      char * */
   fn_i_kRiis,  /* int     KEY      REAL     int      int      char * */
   fn_i_kRiiis, /* int     KEY      REAL     int      int      int      char * */
   fn_i_kki,    /* int     KEY      KEY      int      -        -     */
   fn_i_kkii,   /* int     KEY      KEY      int      int      -     */
   fn_i_kii,    /* int     KEY      int      int      -        -     */ --------------------编程问答-------------------- 部分2:
_fn_iend   = 399,
                /* Result  Par 1    Par 2    Par 3    Par 4    Par 5  */
_fn_kstart = 400,
   fn_k_,       /* KEY     -        -        -        -        -      */
   fn_k_k,      /* KEY     KEY      -        -        -        -      */
   fn_k_kk,     /* KEY     KEY      KEY      -        -        -      */
   fn_k_kkk,    /* KEY     KEY      KEY      KEY      -        -      */
   fn_k_ks,     /* KEY     KEY      char *   -        -        -      */
   fn_k_kss,    /* KEY     KEY      char *   char *   -        -      */
   fn_k_s,      /* KEY     char *   -        -        -        -      */
   fn_k_i,      /* KEY     KEY      -        -        -        -      */
   fn_k_ki,     /* KEY     KEY      int      -        -        -      */
_fn_kend   = 499,
                /* Result  Par 1    Par 2    Par 3    Par 4    Par 5  */
_fn_astart = 500,
   fn_a_,       /* array   -        -        -        -        -      */
   fn_a_a,      /* array   array    -        -        -        -      */
   fn_a_aa,     /* array   array    array    -        -        -      */
   fn_a_aaa,    /* array   array    array    array    -        -      */
   fn_a_aaaa,   /* array   array    array    array    array    -      */
   fn_a_aai,    /* array   array    array    int      -        -      */
   fn_a_aak,    /* array   array    array    KEY      -        -      */
   fn_a_aaR,    /* array   array    array    REAL     -        -      */
   fn_a_aas,    /* array   array    array    char *   -        -      */
   fn_a_ak,     /* array   array    KEY      -        -        -      */
   fn_a_akk,    /* array   array    KEY      KEY      -        -      */
   fn_a_aks,    /* array   array    KEY      char *   -        -      */
   fn_a_akss,   /* array   array    KEY      char *   char *   -      */
   fn_a_i,      /* array   int      -        -        -        -      */
   fn_a_ai,     /* array   array    int      -        -        -      */
   fn_a_aR,     /* array   array    REAL     -        -        -      */
   fn_a_as,     /* array   array    char *   -        -        -      */
   fn_a_asi,    /* array   array    char *   int      -        -      */
   fn_a_k,      /* array   KEY      -        -        -        -      */
   fn_a_kk,     /* array   KEY      KEY      -        -        -      */
   fn_a_kkk,    /* array   KEY      KEY      KEY      -        -      */
   fn_a_kkkk,   /* array   KEY      KEY      KEY      KEY      -      */
   fn_a_ks,     /* array   KEY      char *   -        -        -      */
   fn_a_kss,    /* array   KEY      char *   char *   -        -      */
   fn_a_kRs,    /* array   KEY      REAL     char *   -        -      */
   fn_a_kks,    /* array   KEY      KEY      char *   -        -      */
   fn_a_kkks,   /* array   KEY      KEY      KEY      char *   -      */
   fn_a_RRR,    /* array   REAL     REAL     REAL     -        -      */
   fn_a_RRi,    /* array   REAL     REAL     int      -        -      */
   fn_a_kkR,    /* array   KEY      KEY      REAL     -        -      */
   fn_a_s,      /* array   char *   -        -        -        -      */
   fn_a_ss,     /* array   char *   char *   -        -        -      */
   fn_a_aRRRR,  /* array   array    REAL     REAL     REAL     REAL   */
   fn_a_aii,    /* array   array    int      int      -        -      */
 fn_a_iikkkkRRR,/* array   int      int      KEY   KEY   KEY   KEY  REAL  REAL  REAL   */
   fn_a_iikRRR, /* array   int      int      KEY      REAL     REAL     REAL     -     */
   fn_a_ikRRR,  /* array   int      KEY      REAL     REAL     REAL     -     */
   fn_a_iaai,   /* array   int      array    array    int      -        -     */
   fn_a_iaaRRR, /* array   int      array    array    REAL     REAL     REAL  */
   fn_a_kkkii,  /* array   KEY      KEY      KEY      int      int    */
   fn_a_kiiiisi,/* array   KEY      int      int    int      int    string   int*/
   fn_a_aaaai,  /* array   array    array    array    array    int    */
   fn_a_ki,     /* array   array    int                               */
   fn_a_aasi,   /* array   array    array    string   int             */
   fn_a_aiRai,  /* array   array    int      REAL       array   int   */
   fn_a_iR,     /* array   int      REAL                              */
   fn_a_iasi,   /* array   int      array     string   int            */
   fn_a_aaRRi,  /* array   array    array    REAL  REAL  int          */
   fn_a_aasiaii,/* array   array    array  string int array int int   */
   fn_a_sss,    /* array   char *   char *   char *   -        -      */
   fn_a_kR,     /* array   KEY      REAL                              */
   fn_a_kiR,    /* array   KEY      int      REAL                     */
   fn_a_kki,    /* array   KEY      KEY      int                      */
   fn_a_kkki,   /* array   KEY      KEY      KEY       int            */
   fn_a_kkRi,   /* array   KEY      KEY      REAL      int            */
   fn_a_aaai,   /* array   array    array    array     int            */
   fn_a_kRi,    /* array   KEY      REAL     int      -        -      */
   fn_a_kkii,   /* array   KEY      KEY      int       int            */
   fn_a_kkkRi,  /* array   KEY      KEY      KEY       REAL    int    */
   fn_a_aaaaa,  /* array   array    array    array   array   array    */
   fn_a_aaas,   /* array   array    array    array   char *           */
   fn_a_aaaaas, /* array   array    array    array   array   array    char * */
   fn_a_aaki,   /* array   array      array      KEY     int             */
_fn_aend   = 599
} ArgType; --------------------编程问答-------------------- 部分3:
typedef void (*FUNCTION)();
void vc_function_add(
   char   *name, /* User name of function */
   FUNCTION func, /* Function pointer      */
   ArgType arg, /* Argument type         */
   int    i , /* Argument count        */
   int   j    /* Units type encoding   */
   ){ };

void vc_function_remove(
   char   *  /* User name of function */
);


#define vc_MAX_RANK 7 /* Only 2 are usable in this release. */

typedef int   vc_DIMS[vc_MAX_RANK];    /* Used to describe the dimensions of the array */
typedef int   vc_BNDS[vc_MAX_RANK][2]; /* Used for extracting subsets of the matrix,   */
                                       /* or for computing an index into the values    */
                                       /* vector given a set of indexes.               */
typedef enum {
   EXPR_T_NONE,
   EXPR_T_REAL,
   EXPR_T_INT,
   EXPR_T_STRING,
   EXPR_T_KEY,
   EXPR_T_ENUM,
   EXPR_T_ARRAY,
   EXPR_T_LOCORI
} EXPR_TYPE;

typedef void *vc_ARRAY;
typedef union {
   int    i; /* Use for both ints and keys */
   double d;
   char  *s;
} s_vc_EL;
typedef s_vc_EL *vc_EL;
vc_ARRAY* vc_array_create (vc_DIMS Dims, int Rank, int ColumnVector);

void      vc_array_set_values (vc_ARRAY A, vc_EL Values, int Index, int Count);
void      vc_array_get_values (vc_ARRAY A, vc_EL Values, int Index, int Count);
double*   vc_array_values     (vc_ARRAY A);

void      vc_array_set_dims (vc_ARRAY A, vc_DIMS Dims, int  Rank, int  ColumnVector);
void      vc_array_get_dims (vc_ARRAY A, vc_DIMS Dims, int *Rank, int *ColumnVector);

int       vc_array_compute_index (vc_ARRAY A, vc_BNDS Bounds, int nBounds);
          /* Put index values into the first location of each Bounds value. */

void      vc_array_form_submatrix (vc_ARRAY A, vc_BNDS Bounds, int nIndex);

int       vc_array_element_count (vc_ARRAY A);

int       vc_array_same_shape (vc_ARRAY A1, vc_ARRAY A2);

vc_EL     vc_array_elements (vc_ARRAY A);

void      vc_array_set_element_type    (vc_ARRAY A, EXPR_TYPE ElementType);
EXPR_TYPE vc_array_element_type        (vc_ARRAY A);
void      vc_array_coerce_element_type (vc_ARRAY A, EXPR_TYPE ElementType);
void      vc_array_set_string_element  (vc_ARRAY A, char *Value, int Index);

int       vc_array_source_object       (vc_ARRAY A);


void      vc_error (char *Msg, ...);


/*--------------------------------------------------------------------------*/

typedef void (*DOE_FN)(int nVars, int nCases, int **TrialMatrix, int *nTrials);

void vc_doe_add (DOE_FN TheFn, int Which); /* Which should be 1, 2 or 3 */

/*--------------------------------------------------------------------------*/

/* DO NOT MODIFY ANY STRUCTURE FIELD BEGINNING WITH "p_" */
struct s_oi {
   void  (*p_AppEval)(struct s_oi *opt_info);
   void   *p_AppData;
   int     p_Analysis;
   int     p_SaveDiffs;
   int     p_AnalysisCalls;

   int     p_Model;

   int    *p_DesignVar;
   double *DesignVal;            /* MUST be modified by optimization algorithm */
   int     p_nVars;
   double *p_LowerBound;
   double *p_UpperBound;

   int    *p_Objective;
   double *p_ObjectiveVal;       /* Design function values */
   int     p_nObjs;
   int    *p_ObjUnits;

   int    *p_Constraint;
   double *p_ConstraintVal;      /* Design function values */
   int     p_nCons;
   int    *p_ConUnits;

           /* You may modify any of this data at your whim */
   int     Characteristic;       /* minimize = 0; maximize = 1 */
   int     MaximumIterations;
   double  ConvergenceTolerance;
   int     DifferencingTechnique;/* forward = 0 or centered = 1 */
   double  ScaledPerturbation;   /* Perturbation value for differencing */
   int     p_Algorithm;          /* user1 = 1; user2 = 2; user3 = 3 */

   double *p_UserParameters;
   int     p_nUserPars;

   int     p_oResset;
   int     p_nRes;

   int     p_Aborted;
   int     Init;                 /* Set to FALSE (0) when your initialization is complete */
   int     NewIteration;         /* MUST be set to TRUE (1) when a new iteration is beginning before calling vc_opt_solver_submit*/
   int     Iteration;            /* Updated by vc_opt_solver_submit when a NewIteration is detected */
   int     ReturnCode;           /* Not used by ADAMS/View, may be used to convey termination status from optimizer */

   int     IterationsBeforeRescale; /* Values direct from parameter */
   int     SlpConvergenceIterations;

   int     AbortOnError;         /* Set from ON_OBJECTIVE_ERROR parameter */
};

typedef struct s_oi OPT_INFO;

typedef void (*OPT_FN)(OPT_INFO *opt_info);

void vc_opt_add (OPT_FN TheFn, int Which); /* Which should be 1, 2 or 3 */

void vc_opt_solver_submit (OPT_INFO *opt_info);


# ifdef __cplusplus
}
# endif

/*--------------------------------------------------------------------------*/
#endif

--------------------编程问答-------------------- #  define vc_initialize_user __declspec(dllexport) vc_initialize_user 

vc_initialize_user 怎么用了两次?

#define vc_initialize_user __declspec(dllexport)

而且vc_initialize_user 是用来修饰你的导出函数的。.. --------------------编程问答-------------------- 头文件? --------------------编程问答-------------------- 那个三部分的就是头文件,问题出在这个函数的部分:这个函数原来这样格式的:void vc_function_add(
   char   *, /* User name of function */
   FUNCTION , /* Function pointer      */
   ArgType , /* Argument type         */
   int     , /* Argument count        */
   int       /* Units type encoding   */
   );编译总是出现lnk2019错误,不能识别的外部符号,改成下面的格式就好了,编译也行了,可是调试就不行了。
我的dll需要被adams(一个动力学仿真的软件调用,试过别的例子的dll,能调用,但是我用那个例子的c文件,生成的dll就不能调用。
真是郁闷,原来用vc6.0时候是可以调用的,改成如下格式就行了,在头文件中更改的。


typedef void (*FUNCTION)();
void vc_function_add(
   char   *name, /* User name of function */
   FUNCTION func, /* Function pointer      */
   ArgType arg, /* Argument type         */
   int    i , /* Argument count        */
   int   j    /* Units type encoding   */
   ){ };(总觉得这样改生成没问题了,但还是不对吧。这个函数是用来告诉我的adams软件,这个×name的函数是用户自己编写的函数,在那个软件中没有查到函数具体怎么定义的,只有这个头文件中的那点声明。这样的格式能算函数吗?怀疑啊?)

调试说调试信息不匹配,也有pdb文件,也让生成调试信息了,就是不行啊

--------------------编程问答-------------------- 加了{ } 就是函数实现了,你第一个是函数定义... --------------------编程问答-------------------- 哦,可是还是不能调试啊,为什么啊?
--------------------编程问答-------------------- 谁帮我看看,这个模板哪有问题,它是仿照fortran的模式定义的,因为原来adams只用fortran来编写子程序的。
不过我今天用fortran的模板调试也有问题啊,难道是vs2005的问题?
--------------------编程问答-------------------- 不能调试,但能执行,只是执行结果不对,本来可以在adams下看到函数的,现在看不见
--------------------编程问答-------------------- 关注一下啊
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,