commit 54cf6720b39acaa1d9e6059330c67534c77cb2b7
Author: MikoĊaj Lenczewski <mblenczewski@gmail.com>
Date: Sun, 30 Nov 2025 14:36:51 +0000
Initial commit
Diffstat:
4 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 3.5)
+
+set(CMAKE_CXX_STANDARD 11)
+
+add_executable(myexe myexe.cpp)
+
+add_library(mylib SHARED mylib.cpp mylib.hpp)
diff --git a/myexe.cpp b/myexe.cpp
@@ -0,0 +1,34 @@
+#include <dlfcn.h>
+
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc < 2) {
+ fprintf(stderr, "Usage: %s <path/to/lib.so>\n", argv[0]);
+ return 1;
+ }
+
+ char *path = argv[1];
+
+ void *lib = dlopen(path, RTLD_NOW);
+ if (!lib) {
+ fprintf(stderr, "dlopen(libmylib.so): %s\n", dlerror());
+ return 1;
+ }
+
+ void *fn = dlsym(lib, "mylib_foo");
+ if (!fn) {
+ fprintf(stderr, "dlsym(lib, mylib_foo): %s\n", dlerror());
+ return 2;
+ }
+
+ int res = ((int (*)(int, int)) fn)(1, 2);
+ if (res != 3)
+ return 3;
+
+ dlclose(lib);
+
+ return 0;
+}
diff --git a/mylib.cpp b/mylib.cpp
@@ -0,0 +1,5 @@
+extern "C" int
+mylib_foo(int a, int b)
+{
+ return a + b;
+}
diff --git a/mylib.hpp b/mylib.hpp
@@ -0,0 +1,2 @@
+extern "C" int
+mylib_foo(int a, int b);