who am i ... i'm back.
分类: WINDOWS
2008-04-02 21:17:22
一. 静态库包括.lib和.h文件,在工程中使用静态库分为3步:
<1> 在工程中加入静态库,有两种方法:
**方法一:项目设置中引用.lib,project-> setting-> link-> object/library modules中添加.lib;(需要在tools/options设置正确的引用路径)
**方法二:在项目中直接加入lib,project-> add to project-> files,选择正确的.lib。
<2> 在工程中包括.h文件;(可能 需要在tools/options设置正确的引用路径)
<3> 在工程中使用静态库中的函数;
二. 动态链接库一般包括.lib(导出函数),.h,.dll文件,使用动态库有两种情况:
a . 隐式链接,同使用静态库相似,分为三步:引用.lib,包含头文件,使用导出函数;
b. 动态加载,直接使用LoadLibrary 加载所需的动态库,然后指定所需的导出函数,效率最高!
三.关于lib文件:
开发DLL的时候,就会生成两个文件:LIB静态库文件(接口文件)、DLL动态库文件(程序文件).
LIB是提供DLL接口的文件,供编译器使用.
#pragma comment(lib, "##/##/mine.lib")
是使本工程加入mine.dll动态链表库的接口库文件,让本工程可以使用mine.dll中的函数
另:建立c语言函数库的办法
1.现将二个函数sub1()及sub2()建立成一个函数库文件取名为mylib.lib。两个函数的函数及型参如下:
函数1: void sub1(void);
函数2: float sub2(int i,float x);
将它们分别建立一个文件,取名为s1.c及s2.c,在用命令tcc对它们分别编译后产成两个目标文件s1.obj及s2.obj,最后使用tlib命令
建立函数库文件mylib.lib,并建立相应的例表文件(例表文件主要用来检查主函数库的使用情况),命令格式如下:
tcc s1.c s2.c
tlib mylib +s1 +s2,mylib.lst
将产生的mylib.lib函数库文件拷贝到标准库目录下c:\tc\lib
2.建立其头文件(假设取名为myfunc.h)内容如下:
extern void sub1(void);
extern float sub2(int,float);
将此文件拷贝到目录下c:\tc\include
3.在用户的程序中按下例方式直接使用即可:
#include
main()
{…
调用sub1(),sub2();
…
}
4.在Turboc下用编译命令tcc对用户程序文件进行编辑及链接,设其用户程序文件名为my.c,使用命令格式:
tcc -Ic:\tc\include
http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html
--------------
方法一:windows提供了一套函数,用于加载动态链接库中的符号(函数和变量),调用这些函数去加载:
1. HINSTANCE LoadLibrary( LPCTSTR lpLibFileName);
2. FARPROC GetProcAddress( HMODULE hModule, LPCWSTR lpProcName);
3. BOOL FreeLibrary( HMODULE hLibModule);
这最直观的一种方法,同时也是最麻烦的一种办法。
方法二:让调用者的工程依赖于动态链接库工程。步骤如下:
1. 让调用者的工程处于active状态下。
2. 打依赖设置对话框:Project-->dependencies。
3. 选择动态链接库工程。
这种方法比较方便,但要求有DLL的项目文件。
方法三:直接把动态链接库产生的.lib文件加入到调用者的工程中。
方法四:进入Link设置:Project-->settings-->Link,选择Categery中的Input,在object/library modules里输入的动态链接库对应
的.lib文件名,在Additional library path中输入动态链接库对应的.lib的路径。
方法五:#pragma (lib, "filename.lilb")