编译程序成lib
① C语言如何生成库文件
有一些代码,我们编程时经常用到,或者我们对某些部分很熟悉,并写出了一些可用的接口。这时,我们会考虑把这些c文件做成一个lib库,以方便自己使用,或这给别人调用。
我这里介绍下在vc++6.0下如何来制作静态库:
第一步:创建一个工程,选择Win32Static
Library,输入工程名。这时就创建好了。
第二步:工程创建好了,再点击新建,这时选择文件,选择c++
source
file选项,创建一个.c
文件。
在这个文件中,你可以写入你要做成库的c函数。当然,可以继续创建其他c文件,然后将要供外部使用的接口单独放到头文件中,一般而言,一个c文件对应一个头文件。
第三步:完成以上步骤后,我们就可以生成库了。事实上,我们点击编译即可,这时就可以生成.lib文件了。
一般情况下,是可以正常生成lib文件的。有头文件和lib文件就可以给别人用了。然后我们可以写一个测试函数来试试可不可以使用。
要调用生成的lib中的函数,就要引入头函数。这时,你把lib和头文件放入当前工程中,但build的时候却显示了连接错误。那是因为你没有把lib文件包含进来。加入下面这句话即可了:
#pragma
comment(lib,
"mylib.lib
")
Ok,自己的lib库就这样做成了。以后可以随便调用了
② 怎样编译生成lib文件啊
需要先制作DLL文件,然后生成对应DLL文件的LIB文件,并编写由DLL文件中的公开函数的声明所组成的头文件。
请参阅有关DLL文件制作的教程
③ AS400中怎么把RPG程序编译到指定的LIB里面去。
创建自己的命令
用户在日常管理中,经常会重复使用同一命令,但命令又很长,用户可以创建用CRTDUPOBJ; CHGCMDDFT创建自己的命令简化操作。
例如:命令WRKUSRJOB USER(*ALL) STATUS(*ACTIVE) JOBTYPE(*INTERACT) ASTLVL(*BASIC)
可以按以下步骤进行操作:
A. 输入命令CRTDUPOBJ(Create Duplicate Object)并按F4键。
Create Duplicate Object (CRTDUPOBJ)
Type choices, press Enter.
From object . . . . . . . . . . > WRKUSRJOB Name, generic*, *ALL
From library . . . . . . . . . . > *LIBL Name, *LIBL, *CURLIB
Object type . . . . . . . . . . > *CMD *ALL, *ALRTBL, *AUTL...
+ for more values
To library . . . . . . . . . . . > YOURLIB Name, *FROMLIB, *SAME...
New object . . . . . . . . . . . > USERJOB Name, *OBJ, *SAME
From ASP device . . . . . . . . * Name, *, *CURASPGRP, *SYSBAS
To ASP device . . . . . . . . . *ASPDEV Name, *ASPDEV, *...
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
在用户所在的库(yourlib)中创建WRKUSRJOB命令的副本userjob
B. .在AS/400命令行输入CHGCMDDFT(Change Command Default)命令,
Change Command Default (CHGCMDDFT)
Type choices, press Enter.
Command . . . . . . . . . . . . > USERJOB Name
Library . . . . . . . . . . . > yourlib Name, *LIBL, *CURLIB
New default parameter string . . > 'status(*active) jobtype(*interact)'
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
这样一条新的命令被定义成功。
可以在AS/400命令行输入yourlib/userjob 来执行你需要的功能。
④ 有一个库的源代码,怎么用mingw编译产生成lib
mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。
mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如
#pragma comment(lib, "libx264.dll.a")
这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。
如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。
使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:
#pragma comment(lib, "libx264.a")
但是仅仅链接这么一个静态库是不够的,你还需要链接
libgcc.a
libmingwex.a
⑤ lib文件是什么是不是编译自动生成我不加lib文件运行不了
lib文件是静态库,这种文件中有头文件中声明的函数的实现代码,一般用在静态连编上,编译链接时,将lib文件与其他模块编译生成的目标代码链接,从而形成能够运行的可执行文件。
#pragma comment(lib, "pcc32_vc6.lib")就是连入一个库文件,表示链接pcc32_vc6.lib这个静态库文件来生成可执行文件。