2013-07-09 1 views
0

У меня есть функция указатель на динамическую библиотеку,Получение указателя на функцию динамической библиотеки C (C89)

#include <GL/gl.h> /* or something */ 

void (*vertex)(float, float) = &glVertex2f; 

На GCCi686-яблочно-darwin10-GCC-4.2.1 он всегда работал, но сбой в Visual Studio 2010 с,

error 'vertex': address of dllimport 'glVertex2f' is not static 

У меня он сконфигурирован для C89; Я считаю, что это единственный доступный C. Идея состоит в том, что я хочу вызвать указатель функции как extern в других файлах, которые не включают заголовки библиотеки.

ответ

0

Windows, библиотеки DLL не работают, как BSD/Linux разделяемые библиотеки :(

Я считаю, что вам нужна функция GetProcAddress

Эта ссылка была только что вытащил из Google:. http://msdn.microsoft.com/en-us/library/ms683212(v=vs.85).aspx

+0

Это выглядит многообещающе, но я не отношусь к Windows.h, если я могу его избежать. –

1
#include <GL/gl.h> 

void (*vertex)(float, float); 

и в явном виде,

int main(int argc, char **argv) { 
    vertex = &glVertex2f; 
    ... 
} 

f Исправлена ​​ошибка.

 Смежные вопросы

  • Нет связанных вопросов^_^