创建和链接从旧DLL文件生成的.lib文件

时间:2011-09-01 15:48:42

标签: c++ c visual-c++ dll

我继承了一个旧的VC ++项目,需要一个旧的专有.lib文件来链接。我有lib的头文件,但原始开发人员似乎丢失了.lib文件。

我确实找到了一个DLL文件,我相信这个软件包中的驱动程序使用的文件名与.lib和.h文件同名。我按照这些说明操作:http://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/

有了这个,我能够生成一个.lib文件,据我所知,它包含与我所拥有的.h文件完全相同的函数(中间DEF文件显示了这一点)。第一个项目能够成功构建和链接它,但是第二个项目我利用第一个项目构建的库无法链接抱怨我正在尝试使用的DLL中的函数的未解析符号:

error LNK2019: unresolved external symbol _ncb_receive_wait@12 referenced in function "public: int __thiscall PLC::Write(unsigned short,void *,unsigned short)" (?Write@PLC@@QAEHGPAXG@Z)

我试图了解这是否可行? (获取一个旧的DLL文件,从中生成一个lib,链接它并使用DLL文件?)

2 个答案:

答案 0 :(得分:1)

我知道这个答案对于原始问题来说太迟了,但希望它可以帮助其他人在搜索解决方案时遇到类似的问题:

我有一个类似的问题链接到Visual C ++中的旧DLL。我还沿着创建def文件的路线,然后从这个def文件创建一个新的lib文件。然后,为了解决与Visual C ++试图链接到一个受损函数名称的链接错误,我手动编辑了def文件的EXPORTS部分,以创建一个函数名别名,如下所示:

_ncb_receive_wait@12 = ncb_receive_wait

答案 1 :(得分:0)

您可以按照MingW的建议尝试更自动化的方法,以避免错过任何功能或其他拼写错误。

否则,标题和二进制文件可能不兼容。