我继承了一个旧的 VC++ 项目,它需要一个旧的专有 .lib 文件来链接。我有 lib 的头文件,但原来的开发人员似乎丢失了 .lib 文件。
我确实找到了一个 DLL 文件,我相信该软件包中的驱动程序使用了与 .lib 和 .h 文件同名的 DLL 文件。我遵循了这些说明:http://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/
由此,我能够生成一个 .lib 文件,据我所知,该文件包含与我拥有的 .h 文件完全相同的功能(中间 DEF 文件显示了这一点)。第一个项目能够成功构建并链接到它,但是我拥有的第二个项目使用第一个项目构建的库无法链接,提示我尝试使用的 DLL 中函数的未解析符号:
错误 LNK2019:函数“public: int __thiscall PLC::Write(unsigned short,void *,unsigned short)”中引用了未解析的外部符号 _ncb_receive_wait@12 (?Write@PLC@@QAEHGPAXG@Z)
我想知道这是否可行? (抓取一个旧的 DLL 文件,从中生成一个库,链接它并使用 DLL 文件?)
最佳答案
我知道这个答案对于原始问题来说已经太迟了,但希望它可以帮助其他有类似问题的谷歌搜索解决方案:
我在从 Visual C++ 链接到旧 DLL 时遇到了类似的问题。我还沿着创建 def 文件然后从这个 def 文件创建一个新的 lib 文件的路线走下去。然后为了解决 Visual C++ 尝试链接到损坏的函数名称的链接错误,我手动编辑 def 文件的导出部分以创建函数名称别名,如下所示:
_ncb_receive_wait@12 = ncb_receive_wait
关于c++ - 创建并链接到从旧 DLL 文件生成的 .lib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272902/