我需要使用 DLL 编写 C++ 程序。我有 DLL 和头文件,但没有链接器的 .a 文件。 GNU GCC 编译器无法找到 DLL 文件中的函数。
我收到如下错误:
undefined reference to _imp__mbnEthernetOpen@8
如何解决这个问题。
最佳答案
看起来您正在尝试编译一个依赖于另一个共享库的程序。要在 Windows 上编译支持此库,您通常需要 3 件事:
- 头文件
- 用于编译时链接的 lib 二进制文件
- 用于运行时执行的 dll 二进制文件(必须位于二进制文件的路径中) 在运行时找到并加载)可选如果您静态链接 .lib 文件
您在评论中说您拥有的只是头文件和 dll 文件。这意味着您要么缺少 lib 二进制文件,需要查找/重新编译该库,要么您尝试在运行时动态加载 DLL 并使用函数指针来调用不同的函数(正如 Goksel 在他的回答中提到的那样)。您的错误表明您正在尝试执行第一个选项(链接到共享库)。
如果要在编译时动态链接到库,则需要拥有 lib 文件。
关于c++ - 如何在 C++ 中使用 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447020/