请问VC里面调用lib,是不是一定需要dll 我这里有个lib,文件很大,可以直接用,但是找不到对应的dll,所以想确认一下,是不是有的lib是不需要dll的?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然不需要必须有dll文件。静态的lib文件也是可以的。不过需要静态引入,不能动态调用了 .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。.lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须:1 包含一个对应的头文件告知编译器lib文件里面的具体内容2 设置lib文件允许编译器去查找已经编译好的二进制代码如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress。事实上,我们可以在Visual C++ IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C++函数或一些重载操作的函数名字。 不是,lib有两种:Object Lib:含有二进制代码,如:stdlibc.lib。Entry Lib:仅含有函数在相应dll中的入口,如:ws2_32.lib。 sorry,不是stdlibc.lib,是libc.lib,也就是CRT所在的lib。 也就是说如果lib含有二进制代码,那么编译成exe后,不需要lib文件就可以独立运行了;而调用dll的exe文件就必须有dll才能运行。是不是这样的?另外,如果lib含有二进制代码,可否将它编译成dll来动态调用? lib本身含有实现代码的话,作用其实就相当于多个obj的打包。上还是要吧exe和lib连接起来,如果这个lib不是每一台机器上都有的话,比如以前BC31的graphics库。不过有些开发环境可以帮用户把这件事情一气做完。我不清楚dll可否跟exe做静态链接。lib可否直接编成dll来用也不太清楚,继续关注 当然这个lib需要你静态的生成 VC里面用def文件可以方便地将lib导出为dll。 看你是静态还是动态,如果是静态,就不要dll, 否则就要lib and dll, 不知这样的回答能否对你有帮助◎——◎ 如果是一个静态库,静态引入即可。如果是一个动态库的,就需要DLL 在VC下如何装Freetype库?求详细教程 奇怪现象 vc显示pdf文件 关于事件模型 一个关于dll调用的问题,高手来 如何使用VC6.0地图的缩放??? 关于消息的简单问题 如何播放pcm文件?在线等待! 刚才是我提的scanf("%02x",&a);,感觉给分少,再散50分,刚才回答问题的请进了领分!!!1 CTreeView 能多选,拖动同时支持么? 安装发布的问题:我用vc6写的程序发布时候不知道哪些DLL应该带着一起发布。 如何在一行打印五个bmp图像? 打印编程一问!
1 包含一个对应的头文件告知编译器lib文件里面的具体内容
2 设置lib文件允许编译器去查找已经编译好的二进制代码如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress。事实上,我们可以在Visual C++ IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C++函数或一些重载操作的函数名字。
Object Lib:含有二进制代码,如:stdlibc.lib。
Entry Lib:仅含有函数在相应dll中的入口,如:ws2_32.lib。
另外,如果lib含有二进制代码,可否将它编译成dll来动态调用?
上还是要吧exe和lib连接起来,如果这个lib不是每一台机器上都有的话,比如以前BC31的graphics库。
不过有些开发环境可以帮用户把这件事情一气做完。
我不清楚dll可否跟exe做静态链接。
lib可否直接编成dll来用也不太清楚,继续关注
如果是一个动态库的,就需要DLL