load symbol 'InsertionSortShared': dlsym(0x7fa36ce04080, InsertionSortShared): symbol not found
                  
                  
                  
                  
                  
                  код: 
                  
                  
                  
                  
                  
                      void* handle = dlopen("./libshared.dylib", RTLD_LAZY);
                  
                  
                      if (!handle) {
                  
                  
                          std::cerr << "Cannot open library: " << dlerror() << '\n';
                  
                  
                          return 1;
                  
                  
                      }
                  
                  
                  
                  
                  
                      typedef void (*sort_t)(int* a, int size);
                  
                  
                      dlerror();
                  
                  
                  
                  
                  
                      sort_t Sort = (sort_t)dlsym(handle, "InsertionSortShared");
                  
                  
                  
                  
                  
                      const char *dlsym_error = dlerror();
                  
                  
                      if (dlsym_error) {
                  
                  
                          std::cerr << "Cannot load symbol 'InsertionSortShared': " << dlsym_error << '\n';
                  
                  
                          dlclose(handle);
                  
                  
                          return 1;
                  
                  
                      }
                  
                  
                  
                  
                  
                  что делать?
                  
                  
                
Убедиться, что нужная функция экспортируется с C-ишным именем, например, выполнив текстовый поиск по файлу либы
nm -gU ./libshared.dylib и смотри, есть ли нужный символ
Убедиться, что плюсовый манглинг не перековеркал символы
Обсуждают сегодня