26 Aralık 2017 Salı

dll

Giriş
Şu satırı dahil ederiz
#include <boost/dll.hpp>
BOOST_DLL_ALIAS Macrosu
.h dosyasında şöyle yaparız.
static boost::shared_ptr<foo> createPlugin();

BOOST_DLL_ALIAS(
   createPlugin,
   create_plugin
)
shared_library Sınıfı
Constructor
Şöyle yaparız.
boost::filesystem::path libPath = ...;
boost::dll::shared_library sl (libPath,load_mode::dont_resolve_dll_references);
get_alias metodu
Elimizde şöyle bir metod olsun
Foo Open(const char* filename)
{...}
Şöyle yaparız.
auto f = sl.get_alias<Foo (const char*)>("Open");
load metodu - path
Şöyle yaparız.
boost::filesystem::path libPath = ...;
boost::dll::shared_library sl;
sl.load(libPath);
...
sl.unload();
unload metodu
Şöyle yaparız.
sl.unload();
smart_library Sınfı
Giriş
Şu satırı dahil ederiz.
#include <boost/dll.hpp>
#include <boost/dll/smart_library.hpp>
#include <boost/dll/import_mangled.hpp>
#include <boost/exception/diagnostic_information.hpp>
Constructor
Şöyle yaparız.
boost::filesystem::path path("./libshared.so");
boost::dll::experimental::smart_library sl (path);
Free Style Metodlar
import metodu
C metodları veya mangled C++ metodları için kullanılır. Şöyle yaparz.
auto f1 = boost::dll::import<void(std::string const&, n1::n2::st&)>(path, "...");
import_alias metodu
BOOST_DLL_ALIAS ile isim verilmiş metodu verir. Şöyle yaparız.
 /* load dll */
boost::filesystem::path path("..\\Debug");
path /= "DLL";

boost::function<boost::shared_ptr<foo>()> creator =
  boost::dll::import_alias<boost::shared_ptr<foo>()>(
    path,
    "create_plugin",
    boost::dll::load_mode::append_decorations
);
boost::shared_ptr<foo> plugin = creator();
import_mangled metodu
Şu satırı dahil ederiz.
#include <boost/dll/import_mangled.hpp>



Hiç yorum yok:

Yorum Gönder