zoukankan      html  css  js  c++  java
  • Dll 导出函数 引用Dll外部函数声明

    导出函数

    _declspec(dllexport) int function()

    导出类

    class _declspec(dllexport) class1

    引用Dll函数声明

    _declspec(dllimport) int function()

    解决不同编译器名字改编的问题

    在定义导出函数时加上 extern "C" (大写C),如 extern "C" _declspec(dllexport) int function()

    但这种方法有一个缺陷,不能用于导出一个类的成员函数,只能用于导出全局函数这种情况。

    标准调用约定_stdcall

    于是可以声明为 extern "C" _declspec(dllexport) int _stdcall function()

    最终解决 采用模块定义文件(DEF)

    如在Dll2工程中添加Dll2.def文件

    Dll2.def 文件内容可以如下:

    LIBRARY Dll2

    EXPORT

    function()

    显示加载方式加载Dll

    LoadLibary函数 例如:

     HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
     if(hInst)
     { 
        typedef  BOOL (WINAPI * MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
        MYFUNC fun=NULL; 
        //取得SetLayeredWindowAttributes函数指针 
        fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); 
        if(fun) 
         {
           fun( this->GetSafeHwnd(), RGB(255,0,255)   , 0 , LWA_COLORKEY );
        }
        FreeLibrary(hInst);
     }

    根据序号访问Dll中的导出函数

    MAKEINTRESOURCE宏把指定的函数序号转换为相应的函数名字字符串,这里的函数序号就是在Dll中声明的导出函数序号。

  • 相关阅读:
    推荐一本书 改善你的视力:跟眼镜说再见
    Gentoo中gcc4.1.2到gcc4.3.2的升级
    msbuild学习的一些相关链接
    SqlServer 2005安装问题
    Gentoo linux中安装php5运行环境
    sql 时间函数(全)
    asp.net中的对话框
    win7 资源管理器指向我的电脑
    C/C++ 位操作 总结
    【转】Java字节序转换
  • 原文地址:https://www.cnblogs.com/pbreak/p/1750571.html
Copyright © 2011-2022 走看看