一个静态lib——global.lib,里有一个全局变量g_state(简单变量,DWORD类型)现在有一个对话框工程——dlg.exe
一个静态lib工程——sl1.lib
一个静态lib工程——sl2.libdlg.exe需要连接sl1.lib和sl2.lib
sl1.lib和sl2.lib都需要g_state,于是他们通过extern DWORD g_state来使用上面得到的dlg.exe运行正常。
现在的情况是,dlg.exe也需要g_state了,于是它也通过extern DWORD g_state将g_state引进来,也把global.lib引了进来,
编译连接都通过,可是一运行就出错!出错的代码如下:
CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
ASSERT(m_pDocManager != NULL); //这里为空
return m_pDocManager->OpenDocumentFile(lpszFileName);
}
也就是说在AfxWinMain里面有出错了!
可以肯定是将g_state引进来造成的错误,但不是使用错误,因为将引进来的g_state放在任何地方去使用一下(其实程序完全没有运行到),也会出错,比如:
if (0)
{
DWORD d = g_state; //使用一下
}不知道这个问题能否解决,如果不能解决,有什么其它方法来替代?