谢谢!!!

解决方案 »

  1.   

    还不是一样吗?下面是我在一个程序中的代码:#define TEST_SEG_STATIC_LINK#if defined(TEST_SEG_STATIC_LINK)#pragma comment(lib, "TestDSeg")
    void SetNum(int iNum);
    int GetNum(int* piNum);void CTestDSegAppDlg::OnButton1() 
    {
    SetNum(1);
    }void CTestDSegAppDlg::OnButton2() 
    {
    int iNumNow;
    int iAddressOfgiNum = GetNum(&iNumNow);
    char szNum[10];
    char szCaption[100];
    ::sprintf(szNum, "%d", iNumNow);
    ::sprintf(szCaption, "DLL中全局变量 g_iNum 的地址: %d", iAddressOfgiNum);
    ::MessageBox(NULL, szNum, szCaption, MB_OK);
    }void CTestDSegAppDlg::OnBtnLoaddll() 
    {
    ::MessageBox(NULL, "静态连接,此按钮无效", "提示", MB_OK);
    }#elsetypedef void (*PFUN_SET_NUM)(int);
    typedef int (*PFUN_GET_NUM)(int*);
    HINSTANCE g_hDLL = NULL;
    PFUN_SET_NUM g_pfSetNum = NULL;
    PFUN_GET_NUM g_pfGetNum = NULL;void CTestDSegAppDlg::OnButton1() 
    {
    g_pfSetNum(1);
    }void CTestDSegAppDlg::OnButton2() 
    {
    int iNumNow;
    int iAddressOfgiNum = g_pfGetNum(&iNumNow);
    char szNum[10];
    char szCaption[100];
    ::sprintf(szNum, "%d", iNumNow);
    ::sprintf(szCaption, "DLL中全局变量 g_iNum 的地址: %d", iAddressOfgiNum);
    ::MessageBox(NULL, szNum, szCaption, MB_OK);
    }void CTestDSegAppDlg::OnBtnLoaddll() 
    {
    g_hDLL = ::LoadLibrary("TestDSeg.dll");
    g_pfSetNum = (PFUN_SET_NUM)::GetProcAddress(g_hDLL, "SetNum");
    g_pfGetNum = (PFUN_GET_NUM)::GetProcAddress(g_hDLL, "GetNum");
    }
    #endif