c++动态库调用注意事项

#ifdef _MSC_VER
#include <windows.h>
#include <direct.h>

#define    get_function_address(x, y)    GetProcAddress(x, y)
#define    load_dynamic_library(x)        LoadLibrary(x)
#define    free_dynamic_library(x)        FreeLibrary(x)
#define    get_error_message()            GetLastError()

#else
#include <unistd.h>
#include <dlfcn.h>

#define    get_function_address(x, y)    dlsym(x, y)
#define    load_dynamic_library(x)        dlopen(x, RTLD_LAZY|RTLD_GLOBAL)
#define    free_dynamic_library(x)        dlclose(x)
#define    get_error_message()            dlerror()

#endif

动态库接口封装的时候,不要使用STL之类的参数类型,作为参数传递。目前发现在arm64下是可行的,但是在windows下会崩溃,原因是double free了,感觉是浅拷贝之类的问题。

 

Guess you like

Origin blog.csdn.net/struborn_b/article/details/106529936