在TestDialog.cpp中,代码如下:
...
__declspec( dllexport ) int g_sharedata;//共享数据DLL
UINT MutexThread(LPVOID pParam);
...
UINT MutexThread(LPVOID pParam)
{
HWND hWnd = (HWND)pParam;
m_nNum++;/////////////////////////////编译时提示此变量没有声明?????
while(1)
{
CString str; g_sharedata++;
str.Format("Line%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA1, str);
str.Format("Num%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA4, str);
str.Format("Num%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA5, str);
::Sleep(3000);
} return 0;
}上面所注释的变量在TestDialog.h中已经声明了,如下:
class CTestDialog : public CDialog
{
public:
int m_nNum;
...
这到底怎么回事?请高手指教~!
...
__declspec( dllexport ) int g_sharedata;//共享数据DLL
UINT MutexThread(LPVOID pParam);
...
UINT MutexThread(LPVOID pParam)
{
HWND hWnd = (HWND)pParam;
m_nNum++;/////////////////////////////编译时提示此变量没有声明?????
while(1)
{
CString str; g_sharedata++;
str.Format("Line%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA1, str);
str.Format("Num%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA4, str);
str.Format("Num%d", g_sharedata);
::SetDlgItemText((HWND)pParam, IDC_STA5, str);
::Sleep(3000);
} return 0;
}上面所注释的变量在TestDialog.h中已经声明了,如下:
class CTestDialog : public CDialog
{
public:
int m_nNum;
...
这到底怎么回事?请高手指教~!
{
HWND hWnd = (HWND)pParam;
m_nNum++;/////////////////////////////编译时提示此变量没有声明?????
...
}成员变量是不能访问了,但全局变量可以访问!
--------------------Configuration: Dialog - Win32 Debug--------------------
Compiling...
TestDialog.cpp
Generating Code...
Skipping... (no relevant changes detected)
Dialog.cpp
DialogDlg.cpp
Linking...
TestDialog.obj : error LNK2001: unresolved external symbol "int m_nNum" (?m_nNum@@3HA)
Debug/Dialog.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...Dialog.exe - 2 error(s), 0 warning(s)
int g_iValue = 10;
在global.h中
extern int g_iValue;在你的.cpp中
#include "global.h"
g_iValue = 11; //这时就可以访问全局变量了,只要包函带导出全局的头文件