• C++(VS2012)DLL动态库的生成和调用


    DLL动态链接库的生成:

    首先打开VS2012,新建——项目——Win32控制台应用程序(项目名称:ConsoleApplication1)——空项目

    新建一个源文件source.cpp

    先用控制台exe配置类型自己定义函数,并通过主函数调试

    然后可以通过项目——属性——配置属性——常规——项目默认值——配置类型下

    选择动态库(.dll)选项

    然后点击Build,会在工程的Debug目录下生成一个DLL文件(ConsoleApplication1.dll)

    extern "C" _declspec(dllexport) void myFun();
    
    #include "iostream"
    using namespace std;
    void myFun()
    {
        cout<<"Hello world"<<endl;
    }
    int main()
    {
        myFun();
        return 0;
    }

    VS2012 DLL动态链接库的调用

    首先建立一个win32控制台的空项目,自己建立一个源文件source.cpp

    添加头文件include<windows.h>

    定义一个函数指针类型 typedef void (*DLLFUN)();(注意返回值类型,参数顺序类型都要一样)

    然后通过HINSTANCE hdll;创建一个实例句柄

    hdll = LoadLibrary("xxxx.dll");    //加载动态库

    这里字符串类型是LPSTR,当是unicode字符集的时候会不行,因此要在工程--属性--常规---默认字符集:把“unicode”改成支持多字符扩展即可

    然后定义一个函数地址变量 DLLFun myFun1;

    myFun1 = (DllFun)GetProcAddress(hdll,"myFun");获取动态库里面的myFun函数的入口地址

    然后myFun1();调用即可

    最后释放内存

    FreeLiabrary(hdll);

    #include"iostream"
    #include "windows.h"
    #include "time.h"
    using namespace std;
    
    typedef void (*DllFun)();
    int main()
    {
    
        HINSTANCE hdll;
        hdll = LoadLibrary("E:\C++DLL_LIB\ConsoleApplication1\Debug\ConsoleApplication1.dll");
        if(hdll == NULL)
        {
            FreeLibrary(hdll);
            cout<<"Dll loaded is fail..."<<endl;
            getchar();
            return -1;
        }
        DllFun myFun1;
        myFun1 = (DllFun)GetProcAddress(hdll,"myFun");
        if(myFun1 == NULL)
        {
            FreeLibrary(hdll);
            cout<<"DLLaddress loaded is fail..."<<endl;
            getchar();
            return -1;
        }
        myFun1();
        FreeLibrary(hdll);
        return 0;
    }

  • 相关阅读:
    Python之旅.第九章.并发编程.
    Python之旅.第九章.并发编程。
    Python之旅.第九章.并发编程..
    Python之旅.第九章.并发编程
    Python之旅.第九章.并发编程
    animate.css
    JS对于Android和IOS平台的点击响应的适配
    腾讯设计导航
    炫酷照片墙----------------网站也不错的样子
    判断设备是电脑还是手机
  • 原文地址:https://www.cnblogs.com/mypsq/p/5060049.html
Copyright © 2020-2023  润新知