我自己写了一个DLL,在DEBUG模式下调用一点问题都没有,但是编译成RELEASE的时候一调用就挂,注意不是DLL有问题,因为我详细测试过DLL肯定没有问题的。为什么主程序会挂呢??以下是调用DLL部分代码:
typedef BOOL (PROCESSPROC)(CString,CString,CString,int);
PROCESSPROC* pFunction;
VERIFY(pFunction = (PROCESSPROC*)::GetProcAddress(temp->hInstance, temp->szInterFacename));
if(!(*pFunction)(g_strMapName,g_strLayerName,g_strObjectID,g_UserLevel))
{
AfxMessageBox("DLL 运行失败!!!");
return FALSE;
}
temp是一个保存DLL信息的结构,成员变量hInstance ,szInterFacename都已经初始化,而且这段代码也能正确运行,DLL的界面也能看见,就是在看见DL界面的时候挂了。很奇怪
typedef BOOL (PROCESSPROC)(CString,CString,CString,int);
PROCESSPROC* pFunction;
VERIFY(pFunction = (PROCESSPROC*)::GetProcAddress(temp->hInstance, temp->szInterFacename));
if(!(*pFunction)(g_strMapName,g_strLayerName,g_strObjectID,g_UserLevel))
{
AfxMessageBox("DLL 运行失败!!!");
return FALSE;
}
temp是一个保存DLL信息的结构,成员变量hInstance ,szInterFacename都已经初始化,而且这段代码也能正确运行,DLL的界面也能看见,就是在看见DL界面的时候挂了。很奇怪
解决方案 »
- 200分求一个绘制对数螺旋线的代码,在线等待,泻啦
- VC中如何判断一点落在一矩形上
- InstallShield的问题,program和endprogram在哪???????????????????
- 关于提示帮助文件
- 关于使用combo box的问题。。。
- socket中的线程问题。。。。。急!!!!!
- 改变静态文本控件的背景颜色时,只能改变有字的地方,怎样将整体的背景颜色都改变呢????????????
- 为什么我定义的控制栏不能显示???(程序运行正常)
- 请教
- CSocket connect() ?
- 刚学vc,问一个简单问题,关于fscanf的!顶有分
- 如何取得计算机的当前时间??请各位大侠指教!!谢谢!!
Begin Connect DB!//调用ConnectDB函数
Get ServerName//获得数据库服务器名字
Get ServerName OK//获得成功
Begin SQL Connect DB//开始SQL连接
Begin SQL Connect DB OK//连接成功
DB Connect OK!!//ConnectDB函数调用成功
Begin InitData!!//开始数据初始化
END InitData!!//数据初始化成功
Dialog Init OK!!!//对话框初始化完毕!!
都在这里了,没有一个异常!!!怪了!!!
============================
经验告诉我,不要这么自信。
也许两个模块经过上千次试验,单独都没有问题,但这还是不能保证这两个模块链接起来的时候就一定没有错误。
Debug版本没有问题,Release版本错误。那么你的调用程序是什么版本的呢?就是说,你的应用程序是不是Release版本的?有时候debug版本的应用程序需要debug版本的动态库,而release版本的应用程序需要release版本的动态库。这个我也碰到过。
如果不是这个问题,那么,请多多检查Release版本与Debug版本的主要区别上的问题。如vcleaner所说的几个问题。
自信是好事,但不要过于自信。程序是不会撒谎的。
我的应用程序也是RELEASE版本,独立运行的时候也没有问题,加载了DLL就挂了!!如果是DEBUG就没有问题!
这个错误只说创建了一个错误日志,并询问是否发送,并没有说某个指针不能读或不能写啊!!
我以前也碰见过类似问题!
我在主程序中初始化过了,在DLL中也初始化了一次!!是不是这个问题呢??
::CoInitialize(NULL);
::AfxOleInit();
to BigFanOfCpp(vc程序员)
如果调用你说的那些函数会有什么问题呢????
哎!!!!从头来过了!!!