繁体   English   中英

将对象(.o)文件添加到qtcreator项目

[英]Adding object (.o) files to qtcreator project

如何将第三方.o和.h文件添加到QtCreator中的Qt C ++项目? 我想从John The Ripper中添加一些已编译的.o文件到我的probject(忽略它的非跨平台性)。 作为测试,a编写了一个小型C程序(在QtCreator之外)并将其与common.oMD5_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM