Форум программистов, компьютерный форум, киберфорум
С++ под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 366
1

Forbids casting в dlsym - ISO C++ не поддерживает приведение типа указателя на функцию к указателю на объект

29.07.2014, 07:17. Показов 921. Ответов 2
Метки нет (Все метки)

Есть вот такой пример загрузки .so
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <dlfcn.h>
 
int main() {
    using std::cout;
    using std::cerr;
    
    cout << "C++ dlopen demo\n\n";
 
    // open the library
    cout << "Opening hello.so...\n";
    void* handle = dlopen("./hello.so", RTLD_LAZY);
 
    if (!handle) {
        cerr << "Cannot open library: " << dlerror() << '\n';
        return 1;
    }
 
    // load the symbol
    cout << "Loading symbol hello...\n";
    typedef void (*hello_t)();
 
    // reset errors
    dlerror();
    hello_t hello = (hello_t) dlsym(handle, "hello");
    const char *dlsym_error = dlerror();
    if (dlsym_error) {
        cerr << "Cannot load symbol 'hello': " << dlsym_error <<
            '\n';
        dlclose(handle);
        return 1;
    }
 
    // use it to do the calculation
    cout << "Calling hello...\n";
    hello();
 
    // close the library
    cout << "Closing library...\n";
    dlclose(handle);
}
Компилятор выдает вот такое предупреждение.
main.cpp: В функции «int main()»:
main.cpp:25:52: предупреждение: ISO C++ не поддерживает приведение типа указателя на функцию к указателю на объект [по умолчанию включена]
Пытался через reinterpret_cast, эффекту не дало.

Как правильно делать преобразования ?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2014, 07:17
Ответы с готовыми решениями:

Приведение указателя на структуру к указателю на массив char
Доброго всем дня! Работаю с микроконтроллерами, возникла необходимость записывать структуру с...

Приведение типа указателя
Здравствуйте, у меня такой вопрос: как организовать приведение типа указателя к другому? Есть...

Приведение типа указателя на метод
Здравствуйте. Есть функция, принимающая void (*f)(), возможно ли использовать ее в классе,...

Приведение указателя базового типа
У меня не получается выполнить приведение указателя базового типа. Я, и static_cast пробовал, и...

2
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
29.07.2014, 19:37 2
http://pubs.opengroup.org/onli... dlsym.html
1
1441 / 1322 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
30.07.2014, 15:38 3
Цитата Сообщение от admsasha Посмотреть сообщение
Компилятор выдает вот такое предупреждение.
Это предупреждение можно игнорировать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2014, 15:38

Приведение одного парметра-типа к другому разыменованному парметру-типу (указателю) в шаблонах
Здравствуйте! изучаю C++, и есть такой вопрос, можно ли при инстанцировании, допустим, шаблонной...

Приведение указателя на функцию
Здравствуйте, у меня простейший вопрос, но самому не догнать что-то... В качестве аргумента...

ISO C++ forbids. error
#ifndef CPYRAMID_H #define CPYRAMID_H class cPoint3d { public: cPoint3d() :...

ISO C++ forbids assignment of arrays
Подскажите как можно в строку b перенести строку a? #include &lt;iostream.h&gt; int main(){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.