经查发现是如下的代码引起
Util.h
#pragma once
class CUtil
{
static CString m_appPath;
public:
CUtil(void);
~CUtil(void);
static CString GetAppPathWithSlash();
};
Util.cpp
CString CUtil::m_appPath;
CUtil::CUtil(void)
{
}
CUtil::~CUtil(void)
{
}
CString CUtil::GetAppPathWithSlash()
{
TCHAR buffer[1024];
if(m_appPath.IsEmpty())
{
GetModuleFileName(NULL,buffer,1024);
CString currentDir=buffer;
int n=currentDir.ReverseFind(_T('\\'));
m_appPath=currentDir.Mid(0,n+1);
}
return m_appPath;
}
以上代码在一个主应用程序和动态库中使用,两个的配置信息都为“在共享 DLL 中使用 MFC”
主应用程序未运行到我写的代码就莫名奇妙崩溃!有时候报内存访问冲突,有时候报告一些MFC类初始化错误,诸如此类。
后来从头跟踪程序的变化,从没有错到出错逐一检查代码,发现在动态库中调用了CUitl::GetAppPathWithSlash()后开始出错,
之前主应用程序是有调用的。
两个冲突的原因在哪里呢?首先不是代码部分,看来是静态变量部分有问题。删除静态变量部分。OK了。
为什么删除了就可以了呢?