链接库dll-1-shared_library

来源:互联网 发布:文件管理系统源码 编辑:程序博客网 时间:2024/05/23 19:09

编译了 动态链接库代码:  https://github.com/apolukhin/Boost.DLL/blob/develop/example/getting_started_library.cpp

然后测试:

#include <boost/dll/shared_library.hpp>         // for shared_library#include <boost/function.hpp>#include <laok.h>namespace dll =  boost::dll;//shared_library基本接口://static boost::filesystem::path suffix();后缀//void unload() 卸载//void load(...)加载//bool is_loaded() 是否加载成功//bool has(const std::string &)是否包含名字//type get(const std::string &)用名字获取//type get_alias(const std::string &) 用别名获取//native_handle_t native()  本地句柄//boost::filesystem::path location() dll路径//void swap(shared_library &) JOB_DEFINE(dll , shared_library_suffix){PS(dll::shared_library::suffix());}JOB_DEFINE(dll , shared_library_info){dll::shared_library lib("kernel32.dll" , dll::load_mode::search_system_folders);PS( lib.is_loaded() );PS( lib.location() );PS( lib.native() );}JOB_DEFINE(dll , shared_library_get){boost::filesystem::path path = GetCurFilePath();dll::shared_library lib(path/"tutorial/00-getting_started_library" , dll::load_mode::append_decorations);boost::function<int(int)> c_func_name = lib.get<int(int)>("c_func_name");PS( c_func_name(1) );int& c_variable_name = lib.get<int>("c_variable_name");PS(c_variable_name);PSVoid( c_variable_name = 100 );PS( lib.get<int>("c_variable_name") );std::string& cpp_variable_name = lib.get<std::string>("cpp_variable_name");PS( cpp_variable_name );PSVoid( cpp_variable_name = "laok");PS( lib.get<std::string>("cpp_variable_name") );boost::function<std::string (const std::string& )> pretty_name = lib.get_alias<std::string (const std::string& )>("pretty_name");PS(pretty_name("laok"));}

运行效果如下;

=====<dll_shared_library_suffix>begin[dll::shared_library::suffix()]:[".dll"]=====<dll_shared_library_suffix>end [State:OK] [Times:0.004s]=====<dll_shared_library_info>begin[lib.is_loaded()]:[true][lib.location()]:["C:\windows\syswow64\kernel32.dll"][lib.native()]:[755C0000]=====<dll_shared_library_info>end [State:OK] [Times:0s]=====<dll_shared_library_get>beginE:\ArgusTech\workspace-cpp\boost\dll\tutorial\00-getting_started_library.dll********************************loaded explicit!E:\ArgusTech\workspace-cpp\boost\dll\tutorial\00-getting_started_library.dll********************************dll process attach[c_func_name(1)]:[2][c_variable_name]:[1]c_variable_name = 100[lib.get<int>("c_variable_name")]:[100][cpp_variable_name]:[some value]cpp_variable_name = "laok"[lib.get<std::string>("cpp_variable_name")]:[laok][pretty_name("laok")]:[laok Hello from lib!]E:\ArgusTech\workspace-cpp\boost\dll\tutorial\00-getting_started_library.dll********************************loaded explicit!E:\ArgusTech\workspace-cpp\boost\dll\tutorial\00-getting_started_library.dll********************************dll process detach=====<dll_shared_library_get>end [State:OK] [Times:0.086s]





0 0
原创粉丝点击