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

时间:2017-07-19 03:12:23

标签: c++ static-libraries .lib

使用: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中包含了路径和链接输入。但是我收到了一个错误:

error C3861: 'addNumbers': identifier not found

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

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

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

#include<stdio.h>

int addNumbers(int, int);

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

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

#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 阶段,链接器现在将搜索您正在调用的函数,无论是在编译生成的目标代码中,还是在外部库中已指定链接器。

答案 1 :(得分:-1)

从外观上看,您可能忘记将math.lib类包含在主代码文件中。

试试这个:

#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指令中的文件路径。