如何得到DLL的LIB?

potatopro 2000-08-01 05:38:00
我编了一个DLL,但不知如何得到相应的LIB,请大家帮忙.
(也许已前有人问过,麻烦知道的再回答一下.)
...全文
1139 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
potatopro 2000-08-19
  • 打赏
  • 举报
回复
升到IE5,可以给分了。
区区分数,不成敬意。再次感谢大家。
potatopro 2000-08-16
  • 打赏
  • 举报
回复
因为任务急,我先用动态调用对付过去了。这几天也忙着干活,到现在才来回复,对不起大家了。看到这么多热心大虾,感动得我热泪盈眶(已经流下来了,咦,怎么象口水...)。
对VC我完全是个新手(没写过WIN32程序),这几天用MSDN恶补了一把,感觉明白了一些问题,但又有不少新的疑惑,希望众高手再予指点。
不同编译系统编制的EXE调用不同编译系统编制的程DLL肯定是可以的(这本来就是DLL的目的),只要编译系统都支持标准DLL,用API可以动态调用。
至于静态调用,C++ BUILDER有个工具IMPLIB,可以生成DLL的LIB。我本来以为VC下也有类似工具,可能不是这个名字,故提此问题,现在才知道不是这么简单。据我理解和实践,用VC开发DLL,且包含了DEF,编译才自动生成LIB FOR VC(我本来就用的是__declspec(dllexport) __stdcall但没有反应),对于其他开发系统的DLL则无能为力。若要静态调用,可以在VC下也编一个同名但空的DLL,加入DEF编译生成LIB(同CREATIVE所说),或直接用工具lib /def:xxx.def [/out:xxx.lib]生成(同RAINING所说)。至于VC为什么要DEF,我还没明白。
以上所述,不知正确与否,请大家指正。
BTW,进入此页,产生了一个脚本错误,结果我看不到给分输入框,也即不能给分,是IE版本问题还是其他什么原因?
raining 2000-08-11
  • 打赏
  • 举报
回复
不一定管用,因为我没有用bcb写过DLL.你先试试
如果你的库叫 xxx.dll
1.dumpbin /exports xxx.dll > xxx.def
2.修改 xxx.def 文件, 保留Function名称,其他的都删掉。
LIBRARY XXX
EXPORTS
Function1
Function2

3.lib /def:xxx.def [/out:xxx.lib]
creative 2000-08-10
  • 打赏
  • 举报
回复
用VC编写dll,只需用.def文件或__declspec(dllexport)关键字输出你希望其他应用调用的函数,lib文件就会自动生成,现将第一种方法列出,具体如下
1)---//your.def
LIBRARY yourdllname
EXPORTS
func1
func2

另外附带一点,请明确你的输出函数采用的调用规则:一般 __cdecl or __stdcall。
wolfop 2000-08-09
  • 打赏
  • 举报
回复
和, 不一定要用lib输入库嘛, 可以用def文件的啊, 你自己些的dll, 当然知道有什么输出
函数了, 写一个def文件不就可以了. 就能和用lib一样.
注意, 泥的函数必须申明为stdcall, 否则C++的从新命名规则, 很麻烦的.
我记得delphi的文档中有将这些开发工具如何互相使用对方的库.

顺便告诉thinker, vc生成的lib是coff的,而bcb要求是omf的 , 你得用implib或者
coff2omf让他变成bcb可以用的omf库

thinkers 2000-08-08
  • 打赏
  • 举报
回复
可怜!!!
我用vc给人写了一个dll,跑到bcb中也无法使用,bcb说lib不认识!
有谁解决了此问题吗?
急急急!!!
potatopro 2000-08-07
  • 打赏
  • 举报
回复
VC高手们,帮帮我这个总也入不了门的吧.
难道你们只用VC写的DLL?
cqjiang 2000-08-07
  • 打赏
  • 举报
回复
正规DLL在VC和BCB之间才能相互调用。
Ray_czh 2000-08-07
  • 打赏
  • 举报
回复
我想这种方法可能从一开始就是个错误,写DLL来实现跨语言是可能的吗?我想在WINDOWS平台下,你只有写出COM的DLL来才可以做到。
potatopro 2000-08-03
  • 打赏
  • 举报
回复
不好意思,我没说清楚.
我是用c++builder写的,但要给使vc的同伴用.本来可以动态调用,但为了方便,希望静态调用.
我的意思是vc能不能生成现有的dll的lib?该如何做?
oldcowboy 2000-08-01
  • 打赏
  • 举报
回复
好象编译后就有相应的 .lib吧
WHQ 2000-08-01
  • 打赏
  • 举报
回复
如果你用VC开发的,那在连接后会自动生成LIB
MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe) 玩转攻略手记 一份粗糙的研究记录,有待补完和整理。 MinGW: c -> o gcc -c a.c c -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe) o -> exe gcc a.o b.o ... -o main.exe c -> dll,def,a gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba.a a -> dll a2dll liba.a dll -> a: dlltool --dllname a.dll --def a.def --output-lib liba.a (需要def文件) a -> def: dumpbin /exports lib.a > lib.def (在windows上调用,def需要修改) dll -> def : pexports a.dll -o > a.def (这里的-o是指给函数标序号) lib -> def : reimp -d a.lib lib -> a: (for __cdecl functions in most case) reimp a.lib; (for __stdcall functions) MSVC: c -> lib cl /LD a.c (注意已经定义了export列表) c -> dll cl /LD a.c c -> obj cl /c a.c c -> exe cl a.c /out:a.exe dll ->lib lib /machine:ix86 /def:a.def /out:a.lib (需要def文件) obj ->lib lib a.obj b.obj... /out:mylib.lib dll ->def DUMPBIN a.dll /EXPORTS /OUT:a.def (生成的def需要做修正) lib ->def reimp -d a.lib (这个要在MSYS+MinGW下用) 关于这些工具的适用范围可以很容易的理解和记忆。 dll和exe都是PE文件,所以可以使用pexports. lib和a是静态库文件,都是归档类型,不是PE格式。所以不能使用pexports. dll可以使用dlltool. lib可以使用lib, 和reimp(lib->a工具) 所有的bin文件,包括dll,exe,lib,a都可以使用dumpbin. 参考: http://hi.baidu.com/kaien_space/blog/item/5e77fafa2ba9ff16a8d3110a.html Mingw官网文档: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs http://oldwiki.mingw.org/index.php/CreateImportLibraries http://www.mingw.org/wiki/FAQ http://hi.baidu.com/opaquefog/blog/item/9b21b6deb324e25dccbf1ab7.html http://qzone.qq.com/blog/8330936-1238659272 http://hi.baidu.com/jzinfo/blog/item/b0aa1d308de99f9da8018e00.html 本篇测试用代码: 1. main.cpp #include #include #include "mylib.h" using namespace std; int main() { char str[]="Hello world!"; printhello(str); return 0; } 2. mylib.cpp #include #include #include "mylib.h" using namespace std; void EXPORT printhello(char *str) { cout << str << endl; } 3. mylib.h #define EXPORT __declspec(

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧