65.9K
CodeProject 正在变化。 阅读更多。
Home

创建简单的 DLL

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.06/5 (32投票s)

2002年6月29日

1分钟阅读

viewsIcon

285785

downloadIcon

1

创建第一个 DLL 文件的步骤。

引言

本文档展示了使用 VC++ 创建您的第一个 DLL 的逐步技术。

创建您的第一个 DLL 的步骤

  • 创建一个 Win32 动态链接库项目,添加一个 *.cpp 文件和一个 *.h 文件。
  • *.cpp 文件中,创建一个从 CWinApp 文件实例化的类。
    # include <stdafx.h>
    # include "SourceFile.h"
    
    class CDllApp : public CWinApp
    {
        public:
      
            CDllApp::CDllApp()
            {
                Calc(0,0);
            }
    
            DECLARE_MESSAGE_MAP()
    };
    
    BEGIN_MESSAGE_MAP(CDllApp,CWinApp)
    
    END_MESSAGE_MAP()
    
    CDllApp DllObject;
  • *.h 文件中(这里是 SourceFile.h),定义要使用的函数。同时为 _declspec 函数指定 dllexport 值。
    extern "C" _declspec(dllexport) int Calc(char no1,char no2)
    {
        char result;
        result = no1 + no2;
        return result;
    }
  • 然后编译 DLL。
  • 创建一个普通的 Win32 应用程序,包含一个 *.cpp 文件和一个 *.h 文件。
  • *.h 文件中(这里是 AppHeader.h),使用 _declspecdllimport 值声明该函数。
     extern "C" _declspec(dllimport) Calc(int FirstValue,
         int SecondValue);
  • *.cpp 文件中,使用该函数。
    # include "AFXWIN.H"
    # include "AppHeader.h"
    
    class MainFrame : public CFrameWnd
    {
        public:
    
            MainFrame()
            {
                Create(0,"Trial");
            }
    
            void OnLButtonDown(UINT nFlags,CPoint point)
            {
                int res;
                char str[5];
                res = Calc(998,226);
                sprintf(str,"%d",res);
                MessageBox(str);
             }
    
             DECLARE_MESSAGE_MAP()
    };
  • 在“项目->设置”对话框的“链接”选项卡中,转到标记为“对象/库模块”的文本框,并指定 DLL 文件的路径。然后将编译后的 DLL 文件复制到您当前应用程序的路径目录中并运行程序。

需要注意的一些事项

由于 Windows 文件夹中的文件视图选项,DLL 文件可能不可见。因此,您可以转到 DOS 提示符并复制文件,或者在 Windows 资源管理器中启用“显示所有文件”设置来复制文件。要创建使用 MFC 的 DLL,请参阅以下示例。请注意,没有使用 extern "C",并且使用了宏 AFX_MANAGE_STATE(AfxGetStaticModuleState()); 来实现 MFC。

 _declspec(dllexport)CString Display(CString a,CString b)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CString Str;
    Str = a + b;
    return Str;
}

就这样了,各位。祝你好运,玩得开心。

© . All rights reserved.