[英]Adding object (.o) files to qtcreator project
如何将第三方.o和.h文件添加到QtCreator中的Qt C ++项目? 我想从John The Ripper中添加一些已编译的.o文件到我的probject(忽略它的非跨平台性)。 作为测试,a编写了一个小型C程序(在QtCreator之外)并将其与common.o
和MD5_std.o
相关联,并且工作正常; 我可以做gcc -o runme common.o MD5_std.o simpleprogram.c
,但是使用QtCreator,似乎没什么用。 我一直得到未定义的引用。
我尝试将其添加到.pro文件中:
LIBS += "$$_PRO_FILE_PWD_/common.o" "$$_PRO_FILE_PWD_/MD5_std.o"
还有这个:
LIBS += /full/path/to/common.o /full/path/to/MD5_std.o
我还尝试设置INCLUDEPATH
并将.o文件添加为.pro文件中的“其他文件”和“源”,但无论我做什么,对.o文件中的函数的调用总是会导致未定义的引用。
另外,根据我在互联网上找到的所有建议(这对我们很有用,非常奇怪),我没有找到一种方法将.o文件添加到项目中,以便将它们复制到阴影构建中目录,并从那里链接。 我似乎错误地引用了$$_PRO_FILE_PWD_
。
BTW:我开始工作的是连接系统库。 当我将-lcrypt
添加到LIBS
并包含unistd.h
,我可以正常调用crypt函数。
根据您的评论讨论,您似乎至少有两个问题在进行:
1)您需要使用qmake中的OBJECTS变量来使用gcc的-o
参数进行操作。 在这里你可以找到它的文档:
此变量自动从SOURCES变量填充。 每个源文件的扩展名由.o(Unix)或.obj(Win32)替换。 您可以将对象添加到列表中。
基于此,你会写这样的东西:
OBJECTS += common.o MD5_std.o
请注意,您还需要使用“extern C”链接规范来避免名称错位 。 当使用来自C代码和此类编译的第三方对象时,必须能够链接。 您需要为相应的C函数编写此函数:
extern "C"
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.