关于extern一个static函数的问题程序需要调用某个LIB文件 aaa.lib 中的某个函数
该函数声明并实现在aaa.c中,声明如下
static void funcA();
我在我的程序中需要调用这个函数,就写成
extern void funcA(); //(这里应该不用加static关键字了吧,加了好像编译不过)
然后link我的程序时报告funcA()这个函数符号无法找到,但它明明在aaa.lib中实现的了啊。
(link时已经链入了aaa.lib,程序中其他地方都调用了aaa.lib的其他函数了,都能link过)请朋友帮忙想想可能是什么原因?难道aaa.lib中没有funcA()?为什么link不上?

解决方案 »

  1.   

    static 表示函数只能在那个文件使用。
    把static去掉应该就可以了。
      

  2.   

    你可以用vc的depends工具看看lib中的函数
    另外funcA的声明没有导出吧
    静态link也需要找到函数的地址
      

  3.   

    static 表示函数只能在那个文件使用
      

  4.   

    用了static就只能在本编译单元内使用,外部是无法调用的
    用extern导入
      

  5.   

    声明时去掉extern如下:
    void funcA();
      

  6.   

    一个C文件要想调用另外一个C文件中的函数,那该函数的所有声明和函数原形定义前面都不能有static关键字,否则只能在该函数所在的C文件中调用
      

  7.   

    是的
    static 的scope只是本文件的extern可以被所有的調用。。不過需要聲明..