获取C中动态库的函数指针(C89)

时间:2013-07-09 21:32:27

标签: c visual-studio shared-libraries function-pointers c89

我有一个指向动态库的函数指针

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

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

在GCCi686-apple-darwin10-gcc-4.2.1上它始终有效,但在Visual Studio 2010上失败,

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

我为C89配置了它;我相信这是唯一可用的C.我的想法是,我想在其他不包含库头的文件中将函数指针调用为extern

2 个答案:

答案 0 :(得分:1)

#include <GL/gl.h>

void (*vertex)(float, float);

并明确地,

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

修正错误。

答案 1 :(得分:0)

Windows DLL不像BSD / Linux共享库那样工作:(

我相信您需要GetProcAddress功能。

此链接刚刚从Google提取:http://msdn.microsoft.com/en-us/library/ms683212(v=vs.85).aspx