Linux下C++动态加载so 调用方法


Windows 下的 C++动态加载DLL调用方法

 

文献参考 http://man7.org/linux/man-pages/man0/dlfcn.h.0p.html

    http://man7.org/linux/man-pages/man3/dlopen.3.html

    http://tldp.org/HOWTO/Program-Library-HOWTO/dl-libraries.html

    http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

 

加入头文件

#include <dlfcn.h>

定义函数接口 如:

typedef long (*PFN_TEST)(const char* szName, int nAge);
PFN_TEST g_Test = NULL;

然后是调用步骤:

    void* handle = dlopen("/path/to/so", RTLD_LAZY);
    if(!handle)
    {        
            printf("ERROR, Message(%s).\n", dlerror());
            return -1;
    }

    g_Test = (PFN_TEST)dlsym(handle, "Test");
    char* szError = dlerror();
    if(szError != NULL)
    {
        printf("ERROR, Message(%s).\n", szError);
        dlclose(handle);
        return -1;
    }
    if(g_Test != NULL)
    {
        g_Test ("wjshan", 0808);
    }
    dlclose(handle);
    g_Test = NULL;
    return 0;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM