`
jgsj
  • 浏览: 960739 次
文章分类
社区版块
存档分类
最新评论

vc6静态库的生成和调用

 
阅读更多

1、静态库的生成:

在vc6.0++中Ctrl+N选择Projects下的Win32 Static Library,Project name:SumLib,点击OK,下一页中的两项可选可不选,点击Finish完成。

在此工程中新建lib.h和lib.cpp两个文件,源码如下:

//lib.h

#ifndef LIB_H
#define LIB_H
int add(int x, int y);
#endif

//lib.cpp

#include "lib.h"
#include "StdAfx.h"//此处不加此语句总是出错

int add(int x, int y)
{
return (x+y);
}

编译这个工程就得到了SumLib.lib文件,此文件就是一个函数库,它提供了add的功能。将lib.h头文件和SumLib.lib提交给用户后,用户就可以直接使用其中的add函数了。

2、静态库的调用:

新建一个控制台应用程序,仅有一个main.cpp文件,源码如下:

#include "lib.h"
#include <iostream>

using namespace std;

#pragma comment(lib, "SumLib.lib") //指定与静态库一起连接

int main(int argc, char* agrv[])
{
int sum = add(4, 5);

cout<<sum<<endl;

return 0;
}

将生成的lib.h头文件和SumLib.lib静态库放到此工程的目录下即可执行。

静态链接库与动态链接库都是共享代码的方式,它们的区别在于以下两点:

  (1)采用静态链接库(lib)时,lib中的指令被全部直接包含在最终生成的exe文件中;但采用dll时,该dll不必被包含在最终exe文件中,exe文件执行时可以“动态”地引用和卸载这个与exe独立的dll文件,从而在运行时节省系统资源。

  (2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。

(3)静态链接库由.h和.lib文件组成,.h文件要声明.lib中供外界调用的函数的原型,不能缺少。

(4)VC6中调用静态链接库.lib一共有3种方法:
①使用语句#include "lib.h",并将lib.h拷贝到当前工程目录下;对SumLib.lib使用语句 #pragma comment(lib,"***//SumLib.lib"),将SumLib.lib拷贝到目
录"***//SumLib .lib"下。
②使用语句#include “lib.h",并在工具->选项->目录->路径中添加lib.h的路径;对SumLib.lib,在工程->设置->连接->对象/库模块中添加SumLib.lib,并在工具->
选项->目录->路径中添加SumLib.lib的路径。
③lib.h文件的处理同①或②;对SumLib.lib,在工程->添加到工程->文件中导入此.lib文件。


分享到:
评论

相关推荐

    c++ 创建dll(动态库)、static lib(静态库),以及dll的相互调用 示例vs2022工程

    c++ 创建dll(动态库)、static lib(静态库),以及dll的相互调用 示例vs2022工程 sln项目文件在 c++_dll_staticLib\libtest\MathTestLib 目录下 以前有小错误,更新了错误(2023-05-28)

    vc++如何创建和调用动态库

    vc++如何创建和调用动态库核心提示:静态链接库:lib中的指令被直接包含在最终生成的EXE文件中。

    VC 6.0下的Dll(显示调用和隐式调用)

    十分简单的隐式调用和显示调用实例: 其中Lib工程文件用于生成动态连接库 D..Dll是动态调用 S..Dll是静态调用

    MingW VC 之.a .lib .dll .def 关系

    静态调用就是说,先为需要调用的函数生成def文件,然后制作静态库lib文件。再用这个lib调用dll里的函数。 __cdecl 和 __stdcall VC上编译C和C++程序时,默认使用__cdecl函数调用约定。如果想生成__stdcall的函数,...

    供VC6使用的sqlite的SDK

    sqlite官方提供下载的dll包没有头文件和lib文件,只有一个dll和一个def文件。本包从源码中提取了头文件,并根据def文件生成了lib文件,可以直接使用。

    VC的静态链接库 & 动态链接库

    静态链接库的使用需要库的...静态链接库与动态链接库都是共享代码的方式,静态链接库和动态链接库的区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。

    VC_Logger VC_LoggerDll

    手工调用 ILoger_Create() 和 ILoger_Create() 导出函数创建和销毁 ILogger 对象 (注:如果是动态加载,需手工调用 ::LoadLibrary()/::FreeLibrary() 系列 API 函数加载和卸载 Logger DLL) [ ***** ...

    VC++动态链接库(dll)编程深入浅出-----PDF和源码

    静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。  对动态链接库,我们还需建立如下概念:  (1)DLL 的...

    vc实例精通源码,windows基本控件的使用Demo

    示例描述:本章学习使用VC6进行数据库开发的方法和技巧。 01_ODBC_Source 创建ODBC数据源。 02_ODBC_Demo 通过ODBC访问Access数据库。 03_ADO_Demo 通过ADO访问据库。 04_ExecProc 调用SQL Server的存储...

    文件保险箱(动态库实现)

    Enc_Dec_File动态库的生成需要调用openssl库中的相关函数,可采用两种方法导入:(我的Enc_Dec_File.rar中是采用的静态库) 1、如要导入静态库,就需要静态编译openssl,我附加的文件夹中有这个文件,只需要文件夹中...

    求解一元四次方程(vb,vc,c#,excel,html)-16.10.15

    使用 VC++ 编写一元四次方程求解的核心代码,生成动态库、静态库、COM组件、.NET组件,然后使用 vb、vc、c#、excel、html 调用。

    VC学习大纲 VC学习讲义

    VC工程的编译原理与过程,将工程中不同的类拆分到不同的原文件中,每一个类由一个.h和.cpp文件共同完成,然后解决头文件重复定义问题,培养了学员良好的编程习惯,也为以后分析MFC Appwizard生成的工程奠定了良好...

    vc++ 应用源码包_6

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    自己写的dll的简介

    隐式调用必须提供DLL的头文件和引入库(可以看作轻量级的静态库(没有符号定义,但是说明了符号处于哪个DLL中))。 有了头文件和引入库,DLL的使用就跟普通静态库的使用没啥区别,只除了DLL要和EXE一起发布。 显示...

    MFC界面库+例子+使用帮助

    第三步,添加静态库: VC6:点击菜单Project-&gt;Settings(Alt+F7),进入对话框,Link-&gt;Object/library modules填写SkinPPWTL.lib 第四步,加载皮肤文件(这也是最后一步) 在(projectName).CPP文件中找到InitInstance()函数...

    高性能C 通用日志组件VC-Logger.zip

    为了让大家能更方便的学习 VC-Logger,特此精心制作了几个测试用例:TestGUILogger(GUI 版本测试用例 / 静态加载)、TestDynamicLogger(GUI 版本测试用例 / 动态加载)、TestConsoleLogger(Console 版本测试用例 ...

    vc++ 应用源码包_1

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    vc++ 应用源码包_2

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    vc++ 应用源码包_5

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    vc++ 应用源码包_3

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

Global site tag (gtag.js) - Google Analytics