Я использую CLion с CMake (MinGW) и языком C (C11). Я хочу создать файл общей библиотеки с одной функцией, внутри которой вызывается функция "dlopen ()" (используя заголовок "dlfcn.h"),Теперь я хочу создать исполняемый файл и открыть созданный файл общей библиотеки, но когда я пытаюсь использовать «dlopen ()», чтобы открыть созданный файл библиотеки, эта функция возвращает ошибку (126 (не могу найти)), но если я удаляюфункция "dlopen ()" в функции созданной библиотеки, библиотека загружается в исполняемый файл без каких-либо проблем.на самом деле проблема заключается в вызове функции "dlopen ()" в общей библиотеке ... она показывает, что для библиотеки требуется функция "dlopen ()" Основная библиотека !!!!
mysharedlib.c
#include <dlfcn.h>
void hello(void)
{
void * handle = dlopen("xyz.dll", RTLD_LAZY);
}
в этом файле параметры функции dlopen не важны ... просто когда я использую функцию "dlopen", я получаю сообщение об ошибке при открытии библиотеки при сборке
исполняемый файл main.c
#include <stdio.h>
#include <dlfcn.h>
int main()
{
void * handle = dlopen("mysharedlib.dll", RTLD_LAZY);
if(handle == NULL)
{
printf("failed to open the shared library");
return 1;
}
return 0;
}
это 2 разных проекта ... первый - моя общая библиотека, в которой я пытался открыть другую библиотеку, а второй - исполняемый файлкоторый пытается открыть проект 1 (общая библиотека)
здесь, в моем исполняемом файле, я получил сообщение об ошибке «Не удалось открыть общую библиотеку»!
, но если я удалю эту частьиз общей библиотеки (проект 1)
void * handle = dlopen("xyz.dll", RTLD_LAZY);
, а затем создайте проект 1 как общую библиотеку, я не получаю ошибок, и библиотека без проблем откроется в исполняемом файле
в чем проблема ?почему, когда я использую функцию «dlopen» в общей библиотеке, а затем пытаюсь открыть эту встроенную библиотеку в исполняемом файле, я получаю сообщение об ошибке, но когда я удаляю функцию «dlopen» в общей библиотеке, а затем пытаюсь открыть эту библиотекув исполняемом файле проблем нет?