GitXplorerGitXplorer
d

CrossPlatfDynamicLibraryPlugInArchitecture

public
2 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
653389ba3a1edc00578ad1200daa1744b8b9629e

Enclose factory in extern C

committed 6 years ago
Verified
5a6a75b818c72717deb49cf24778316807cbd9d4

Update main.cpp

ddavidalbertonogueira committed 6 years ago
Unverified
4874b3dad211219d75a5eed532a62c120c75859a

Update

ddavidalbertonogueira committed 8 years ago
Unverified
d6771dc5e1197c8d2c517f84e0449a97f5d0b721

Merge branch 'master' of https://github.com/davidalbertonogueira/CrossPlatfDynamicLibraryPlugInArchitecture

ddavidalbertonogueira committed 8 years ago
Unverified
3787454b0f6aa01cae77d78a56db47447d677a80

Update README.md

ddavidalbertonogueira committed 8 years ago
Unverified
904b6e6760340d80fd6d4dd6fcf25de0ce6ef2e5

Update Readme

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;
    }
  }