C++ 如何将库函数加载到main()C++;
使用:VisualStudio2008 问题: 我有一个库math.lib,它的函数如下:C++ 如何将库函数加载到main()C++;,c++,static-libraries,.lib,C++,Static Libraries,.lib,使用:VisualStudio2008 问题: 我有一个库math.lib,它的函数如下: #include <cmath> #include<stdio.h> #include <conio.h> int addNumbers(int a, int b) { return a + b; } 有谁能帮我解决这个问题吗?从外观上看,您可能忘了将math.lib类包含到主代码文件中 试试这个: #include <stdio.h> #in
#include <cmath>
#include<stdio.h>
#include <conio.h>
int addNumbers(int a, int b)
{
return a + b;
}
有谁能帮我解决这个问题吗?从外观上看,您可能忘了将math.lib类包含到主代码文件中 试试这个:
#include <stdio.h>
#include "math.lib" // New line: Quotes tell compiler that it is not a standard library
/* Rest of main code */
#包括
#include“math.lib”//New line:引号告诉编译器它不是标准库
/*主代码的其余部分*/
现在,编译器将知道如何定义math.lib
及其内部的函数
编辑:还要确保您的
math.lib
源代码与主源代码位于同一目录中,或者在#include
指令中将math.lib
替换为文件路径。问题在于您未能声明或原型化您在源代码模块中调用的函数
C++要求您要么声明函数,要么在使用该函数之前显示整个函数体。因此,对于您的情况,应该是:
#include<stdio.h>
int addNumbers(int, int);
int main()
{
printf("show: %d", addNumbers(3,5));
getchar();
}
然后
#包括
#包括“mylib.h”
int main()
{
printf(“显示:%d”,添加编号(3,5));
getchar();
}
编译器实际上并不关心函数是否确实存在,只要您在调用函数之前声明了它即可
在链接阶段,链接器现在将在编译生成的目标代码中,或在指定给链接器的外部库中搜索您正在调用的函数。您希望您的主函数如何知道另一个函数?如果您没有包含stdio.h,它会知道关于printf的信息吗?您需要提供/包括一个带有函数声明的头。您创建的库是
math.lib
吗?如果是这样,不要将它包含在源文件的编译中,只在链接命令行中使用它。您需要一个包含函数声明的标题,如mathlib.h
。您将在带有main()
的文件中以及在定义函数的文件中使用它。您可能会将包含函数的文件构建到数学库中(math.lib
),然后在命令行上将其与包含main()
@MohammedShereif的对象文件链接在一起(以及之后)——我的库构建部分会有什么问题吗?——扩展名<代码> .LIB < /C> >用于Windows环境编写的大多数程序,是指外部导入库或静态库,而不是C++头文件。因此,你选择的名字令人困惑。对此我很抱歉。顺便说一句如果我的math.lib工作正常,那么错误是如何发生的?我把路径和库名链接到项目链接器@ MohammedShereif中,然后就如何构建C++程序感到困惑。那是C++头文件吗?如果是的话,那么它就不参与链接过程。我已经尝试过了。但是出现了另一个错误致命错误C1083:无法打开include文件:“math.lib”:没有这样的文件或目录
证明我只对了一半。Visual Studio确实有一个#导入
。您可以#导入“math.lib”
以将其链接,但仍需要#包含“something.h”
以获取包含在math.lib中的内容声明的标题。找到math.lib
的源文件,并将其移动到与主源文件相同的目录中@MohammedShereif@user4581301是的,我正要这么说。我一定是用visual studio做了很多什么对不起。我会留下评论,这样我在公共场合看起来像个傻瓜。
#include <stdio.h>
#include "math.lib" // New line: Quotes tell compiler that it is not a standard library
/* Rest of main code */
#include<stdio.h>
int addNumbers(int, int);
int main()
{
printf("show: %d", addNumbers(3,5));
getchar();
}
#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();
}