如何将库函数加载到 main() C++

How to load a library function to main() C++

使用:Visual Studio 2008

问题:

我有一个库 math.lib,它的功能如下:

#include <cmath> 
#include<stdio.h>
#include <conio.h>

int addNumbers(int a, int b)
{
    return a + b;
}

我的主要功能是:(更新)

#include<stdio.h>

void main()
{
    printf("show: %d", addNumbers(3,5));
    getchar();
}

我在 Visual Studio 中包含了路径和 link 输入。但是我得到一个错误:

error C3861: 'addNumbers': identifier not found

谁能帮我解决这个问题?

从表面上看,您可能忘记了将 math.lib class 包含到您的主代码文件中。

试试这个:

#include <stdio.h>
#include "math.lib"    // New line: Quotes tell compiler that it is not a standard library

/* Rest of main code */

现在编译器知道如何定义math.lib和里面的函数了。

编辑:还要确保您的 math.lib 源与主源位于同一目录中,或者将 math.lib 替换为 #include 指令中的文件路径。

问题是您未能声明或原型化您在源模块中调用的函数。

C++ 要求您要么声明函数,要么在使用该函数之前显示整个函数体。所以对于你的情况,它将是:

#include<stdio.h>

int addNumbers(int, int);

int main()
{
    printf("show: %d", addNumbers(3,5));
    getchar();
}

请注意,通常,您会将函数声明和原型放在头文件中,并包含该头文件。假设您的头文件的名称是 "mylib.h":

#ifndef MYLIB_H
#define MYLIB_H

int addNumbers(int, int);

#endif

然后

#include<stdio.h>
#include "mylib.h"

int main()
{
    printf("show: %d", addNumbers(3,5));
    getchar();
}

编译器实际上并不关心该函数是否实际存在,只要您在调用该函数之前声明了它即可。

link 阶段,linker 现在将搜索您正在调用的函数,或者在您的目标代码中编译已经产生,或者在您指定给 linker.

的外部库中