К основному контенту

Сообщения

Сообщения за февраль, 2020

C++. Создание динамически подключаемой библиотеки so с помощью CMake

Мини инструкция, т.к. потратил пару часов на разрозненной информации. Библиотека. Обязательно пишем extern "C". Если не указать, то компилятор добавит символы к имени и функция dsym не найдет ничего. #ifdef WINDOWS #define EXPORT extern "C" __declspec(dllexport) #else #define EXPORT extern "C" //__attribute__((visibility ("default"))) #endif // WINDOWS EXPORT int Add(int a, int b) { return a + b; } Программа в которой загружаем библиотеку #ifdef WINDOWS #define IMPORT __declspec(dllimport) IMPORT int Add(int a, int b); #else     #define IMPORT     #include <dlfcn.h> #endif // WINDOWS #include "TestLinuxSharedLib.h" using namespace std; int main() { #ifndef WINDOWS     void* handle;     int (*cosine)(int,int);     //void* cosine;     char* error;     handle = dlopen("./libMySharedLib.so", RTLD_NOW);     if (!handle) {         cout << "not found libMySharedLib.so" &l