请求高手,大师点拨在VC++6.0环境下,我把一个运算程序做成动态链接库,取名为(wsxdll),在debug状态下生成的(wsxdll.dll和wsxdll.lib)调试通过,其外部函数也能被另一个应用程序(usewsx)正常调用完成运算。但同一个(wsxdll),在release状态下生成的(wsxdll.dll和wsxdll.lib)虽也能被应用程序(usewsx)调用,但运算出错。以下是一些细节说明A.在release状态下编译(wsxdll)虽通过,但有warning
Linking...
Creating library Release/wsxdll.lib and object Release/wsxdll.exp
LINK : warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF
wsxdll.dll - 0 error(s),B.(wsxdll)中用了堆结构的数据变量,
我发现,用debug版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值正常,如整型变量的默认值是(-842150451),但用Release版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值不正常,如整型变量的默认值是(3736336)或(0),甚至是(-1.#QNAN)。
注:给堆分配物理内存和释放分配于之的物理内存已在(wsxdll)中正确使用,否则debug版也通不过。
[/size]
Linking...
Creating library Release/wsxdll.lib and object Release/wsxdll.exp
LINK : warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF
wsxdll.dll - 0 error(s),B.(wsxdll)中用了堆结构的数据变量,
我发现,用debug版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值正常,如整型变量的默认值是(-842150451),但用Release版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值不正常,如整型变量的默认值是(3736336)或(0),甚至是(-1.#QNAN)。
注:给堆分配物理内存和释放分配于之的物理内存已在(wsxdll)中正确使用,否则debug版也通不过。
[/size]
估计你程序是内存管理问题。
release 对变量不会初始化,所以 是 不确定值, 请 检查 所有变量 是否 初始化 !
你的变量最好都有默认的初始化值然后就是调用者,dll最好都是相同的debug或release版本