很抱歉问这个新手问题,但我无法解决这个问题......
在同一目录中,我有4个文件:ctacs.ini
; ct_api.h
; libctacs.a
和main.cpp
。
我的cpp文件包含#include "ct_api.h"
,当我尝试编译时使用:
g++ -lctacs main.cpp -o main
我得到了对我的库中定义的函数的未定义引用-__-
你能说出我错了吗?我在互联网上搜索,但选项-lctacs
似乎是正确的方式......
非常感谢
答案 0 :(得分:0)
某些编译器和链接器通过在命令行上从左到右搜索目标文件/源文件/库来解析对函数的引用。这意味着调用外部定义函数的文件应该在包含其定义的目标文件/库/源文件之前出现。
您碰巧有一个确实依赖于此排序的链接器。您需要将库放在 main.cpp
之后,以便找到函数定义:
g++ main.cpp -lctacs -o main