c++ - 创建并链接到从旧 DLL 文件生成的 .lib 文件

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

我继承了一个旧的 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/

相关文章:

c - 如何将数组的一部分从二维数组复制到 C 中的另一个数组

c++ - Visual C++ 2012 中的编译器错误? (乱七八糟的跳转地址)

用 c 创建一个游戏来猜测下一个数字是更高还是更低

c++ - 基类在被访问时未初始化

c++ - Node 插件编译错误

c++ - C++ OpenMP 中线性代数函数的高效并行化

将结构体值与变量进行比较

c++ - VC++ 中库的链接错误

c++ - C++ 中的实际构建日期

c++ - Qt4 Designer 使用 QTableWidget 创建对话框