使用: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
任何人都可以帮我解决这个问题吗?
答案 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
指令中的文件路径。