0

我自己做项目,把main和c源码保存在一个文件里,头文件保存在codeblocks的include目录下。当我从项目主函数中调用我的函数时,它编译得很好。但是当我#include将头文件转到其他文件以供使用时,编译器找不到这些函数。原型在标题中,但它们的定义在另一个文件中的源代码中。我可以访问存储在标头中的预处理器常量和宏,但函数原型与其源代码之间的链接似乎不存在于实际项目之外。

我的目标是制作头文件,就像我正在使用的现有文件(stdio.h、stdlib.h 等)一样。我在任何地方都找不到任何有用的东西。帮帮我,我已经在这几天了!

我知道我可以使用更简单的功能制作 .c 文件,但我想要挑战,想要创建 lib 文件,而且我是一个性能狂(据我所知,使用 .h 文件而不是 .c 文件是效率更高,但不记得为什么。)

头文件:

        #ifndef FIRO_H_INCLUDED
        #define FIRO_H_INCLUDED

        #include <stdbool.h>

        #define MA_TA 69

        bool checkprime(unsigned long long);
        int square(int);

        #endif // FIRO_H_INCLUDED

源代码:

        #include "firo.h"
        #include <math.h>

        bool checkprime(unsigned long long prime)
        {
            unsigned long long root=(unsigned long long)(sqrt(prime)+1);
            unsigned long long i;
            for(i=2; i<=root; i<3?(i++):(i+=2))
            {
                if(prime%i==0)
                return false;
            }
            return true;
        }

        int square(int a)
        {
            return a*a;
        }

我希望得到一个答案,而不是讽刺。我确实在某处读过,将代码分别分割成 .h 文件和源代码会以某种方式加速访问函数的过程,不要怪我不知道它是如何工作的。我实际使用的 checkprime 功能,其余的只是用于测试。

4

1 回答 1

0

在代码块中,您必须为静态库创建一个不同的项目并构建它。然后,您可以打开主项目的链接器设置(项目 -> 构建选项 -> 链接器设置选项卡)并将您的库添加到“链接库”列表中。

于 2012-12-20T03:25:19.263 回答