GitXplorerGitXplorer
d

CrossPlatfDynamicLibraryPlugInArchitecture

public
2 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
1a8a06574b97db9e4204c5249467fccc0ca4a351

Update Readme.txt

ddavidalbertonogueira committed 8 years ago
Unverified
7c8beb3ea2d58ab77d41af1a0bdec72ce1cd5211

Remove files

ddavidalbertonogueira committed 8 years ago
Unverified
bc0ace225124e96ae68441f2919823d5a519d534

.

ddavidalbertonogueira committed 8 years ago
Unverified
6b8fd0bd6579ef05f7a7352abe23bb234356b7a0

Fix macros

ddavidalbertonogueira committed 8 years ago
Unverified
e5d1b1493f9a26fa99647c3d52c398b553f6d16d

Add makefile of makefiles.

ddavidalbertonogueira committed 8 years ago
Unverified
c7dff7b735f57579b40af3999a777377bb6f54d3

Windows dynamically load/unload and link during execution (plug-in architecture) using the Windows linker functions is working.

ddavidalbertonogueira committed 8 years ago

README

The README file for this repository.

Work based on: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html http://www.linuxjournal.com/article/3687

USAGE:

int main(int argc, char **argv) {

  //1) Open dynamic lib; 
  //2) Get functions addresses of that lib and run them
  //3) Close lib handle
  {
    LibHandle lib_handle{ nullptr };
     int(*func_a_plus_b)(int const & a, int const & b) { nullptr };

    LibraryInfo library_info;
    //Use whatever you need for your SO
    library_info.linux_lib_path = "../genericlib/genericlib.so";
    library_info.windows_lib_path = "../x64/Debug/genericlib.dll";

    if (!OpenDynLibPlugIn(library_info, &lib_handle)) {
      std::cerr << "Error opening" << std::endl; return -1;
    }

    if (!GetDynLibFunctionPointer("cfunc_a_plus_b", lib_handle, (void**)&func_a_plus_b)) {
      std::cerr << "Error getting function" << std::endl; return -1;
    }

    std::cout << "cfunc_a_plus_b(2,5) = " << (*func_a_plus_b)(2, 5) << std::endl;

    if (!CloseDynLibPlugIn(lib_handle)) {
      std::cerr << "Error closing" << std::endl; return -1;
    }
  }