【发布时间】:2020-07-01 17:30:36
【问题描述】:
我有一个静态库libmylib.a,其中包含许多预编译对象。这些对象的所有头文件都存储在/path/to/includes/ 中。我正在编译我的主脚本 BACnetSearch.cpp 使用 g++ 与下面的行:
g++ BACnetSearch.cpp -I/path/to/includes/ -L/path/to/libraries/ -lmylib
库中使用的所有函数都可以工作,除了一个函数,它给出了undefined reference to 'function_name'。我检查了该函数是否已在适当的头文件中实例化,存在于库中的对象中,并且已将其包含在脚本的顶部。该库是 BACnet,因此假设该版本没有错误,我该从哪里着手解决这个问题。
您需要的任何其他信息只需询问我会尝试添加。谢谢:)
编辑:收到错误消息:
/tmp/ccDIISDz.o: In function `main':
BACnetSearch.cpp:(.text+0x67e): undefined reference to `bvlc_receive'
collect2: error: ld returned 1 exit status
编辑 2:在其他地方自动标记为已回答,然后链接到具有太多可能问题的通用问题。唯一的可能是在编译库时,编译脚本的顺序会导致此错误基于脚本相互依赖。
【问题讨论】:
-
请将错误信息(逐字)添加到您的问题中。
-
mylib 是 C 还是 C++ 库?
-
@Eljay C++,使用 MakeFiles 用 gcc 编译(全部由 BACnet 开发者创建)
-
@S_Zizzle 通常 gcc 将用于编译 C 代码,而 g++ 用于 C++ 代码。
-
嗯,我从来没有用 gcc 编译过 C++,在它真正编译之前?因为它不应该???
标签: c++ linker include g++ static-libraries