Release中调用DLL导出函数出现问题
在Debug下一切正常,在Release下出现问题。用的是隐式连接方式,DLL头文件的导出声明如下
#ifdef DLL32_API
#else
#define DLL32_API extern "C" _declspec(dllimport)
#endif
还有调用方式是用了WINAPI也就是_stdcall
实现文件
#define DLL32_API extern "C" _declspec(dllexport)
客户应用(调用DLL32)程序在环境设置中的Link选项卡下增加了DLL32.lib,客户程序头文件直接引用了上面的头文件。
出错操作大体在读文件过程中出现。在客户程序中打开了一个文件,用CFile打开
代码如下
file.Open(lpszPathName,CFile::modeRead|CFile::shareDenyWrite,&fe)
后面接下来就调用了dll32中的一个函数对这个打开文件进行操作,函数原型为
HANDLE WINAPI ReadFile(CFile& file)
这个函数操作大体是申请一块内存用传入的参数读取一定的文件内容,然后返回了内存的HANDLE.
进行了跟踪发现程序并没有进入这个函数而是进入了另外的一个函数,不知道是什么原因。等待大虾指点!
问题点数:10、回复次数:4Top
1 楼38062708(土豆精)回复于 2005-12-14 11:26:10 得分 10
可能因为你的DLL是个DEBUG版的呢Top
2 楼steed_jet(训练中de英雄)回复于 2005-12-14 11:28:31 得分 0
debug版的没有出现问题,出现问题的恰恰是release版。Top
3 楼steed_jet(训练中de英雄)回复于 2005-12-14 11:35:27 得分 0
补充一下,在客户端程序中打开文件操作用了
TRY
{
.............
}
CATCH (....)
{
............
}
捕获错误,抛出的错误是文件存取被拒绝
我用的是VC++6.0版本环境打过补丁。Top
4 楼steed_jet(训练中de英雄)回复于 2005-12-26 10:43:36 得分 0
大侠们出手阿!Top




