前几天做Qt项目时,碰到了许多蛋疼的编译问题,下面便是一个。
例如有两个工程A和B,工程A依赖于工程B。B中定义了一个类和一些方法,在A中调用它们。编译的时候编译器报出undefined reference to some_method的错误。这个意思就是说找不到相关的库吧;查了一下论坛,原来这就是Qt中的一个经典错误。解决方法如下:
在.pro文件中添加上对应的引用库,如 LIBS += otherprojectlib.a。如果是debug的话 那就这样写: debug: LIBS+= otherprojectlib.a。执行编译时,程序就会找到相关的引用库了。
题外话
当时好奇了一下,发现Qt里有这样的一个宏: Q_CORE_EXPORT。我想,这个宏声明了这个类或函数是会导出到动态库或静态库中的。但是如果没有加这个宏定义,是不是在外部就不能正常使用了呢?
暂时没有时间和实验环境研究一下,哪位哥们能帮忙指导一下。要不迟点自己再验证。