创建并链接从旧DLL文件生成的.lib文件
Creating and linking against a .lib file generated from an old DLL file
我继承了一个旧的vc++项目,它需要一个旧的专有.lib文件来链接。我有库的头文件,但原来的开发人员似乎已经丢失了.lib文件。
我确实找到了一个DLL文件,我相信这个软件包的驱动程序使用与。lib和。h文件同名的DLL文件。我按照这些指示做了: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文件,从中生成一个库,链接到它并使用DLL文件?)
我知道这个答案对于最初的问题来说太晚了,但希望它可以帮助其他有类似问题的人搜索解决方案:
我有一个类似的问题链接到一个旧的DLL从Visual c++。我还沿着创建一个def文件的路径,然后从这个def文件创建一个新的lib文件。然后,为了解决Visual c++试图链接到一个混乱的函数名的链接错误,我手动编辑了def文件的EXPORTS部分,以创建一个函数名别名,如下所示:
_ncb_receive_wait@12 = ncb_receive_wait
您可以尝试MingW建议的更自动化的方法,以避免遗漏函数或其他打字错误。
否则,头文件和二进制文件可能不兼容。
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- 从 .lib 文件创建一个.dll文件
- 看不到文件'SDL2.lib'
- 可执行文件C++包括.obj,.lib和.dll吗?
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- 链接:致命错误LNK1104:无法打开文件"python37_d.lib"
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 链接器找不到导入的 DLL 的 LIB 文件
- LNK1104无法打开文件"legacy_stdio_definitions.lib"
- 有没有适用于Windows.lib文件的GNU二进制文件描述符(BFD)
- 在Qt中链接具有非标准名称的lib文件
- bitbake-grpc交叉编译/配置失败,错误为c-ares::care引用文件/usr/lib/libcares.s
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- LNK 1104 无法打开文件 'glfw3.lib
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- C++ CLR dll 需要 .lib 文件,但非 CLR 不需要
- G++ 无法链接 curl lib 文件
- 开放式阅读WAV文件lib
- LNK1104无法打开文件'...lib.obj'