【问题标题】:Getting a function pointer to a dynamic library in C (C89)在 C (C89) 中获取指向动态库的函数指针
【发布时间】:2013-07-09 21:32:27
【问题描述】:

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

#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 调用。

【问题讨论】:

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


    【解决方案1】:
    #include <GL/gl.h>
    
    void (*vertex)(float, float);
    

    并且明确地,

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

    修正错误。

    【讨论】:

      【解决方案2】:

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

      我相信你需要GetProcAddress 函数。

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

      【讨论】:

      • 这看起来很有希望,但如果可以避免的话,我不包括 Windows.h。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2016-10-09
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多