gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:13:30 26 4
gpt4 key购买 nike

如何在 QtCreator 中将第三方 .o 和 .h 文件添加到 Qt C++ 项目中?我想将一些来自 John The Ripper 的已编译 .o 文件添加到我的项目中(忽略它的非跨平台性)。作为测试,A 编写了一个小的 C 程序(在 QtCreator 之外)并将其链接到 common.oMD5_std.o 并且它运行良好;我可以只执行 gcc -o runme common.o MD5_std.o simpleprogram.c,但是对于 QtCreator,似乎没有任何效果。我不断收到 undefined reference 。

我尝试将其添加到 .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 文件总是导致 undefined reference 。

此外,根据我在 Internet 上找到的所有建议(对他们有用,这很奇怪),我没有找到一种方法将 .o 文件以复制到项目的方式添加到项目中影子构建目录,并从那里链接。我引用 $$_PRO_FILE_PWD_ 似乎是错误的。

顺便说一句:我开始工作的是链接一个系统库。当我将 -lcrypt 添加到 LIBS 并包含 unistd.h 时,我可以很好地调用 crypt 函数。

最佳答案

根据您的评论讨论,您似乎至少有两个问题正在进行中:

1) 您需要在 qmake 中使用 OBJECTS 变量来进行 gcc 的 -o 参数的操作。在这里你可以找到它的文档:

OBJECTS

This variable is automatically populated from the SOURCES variable. The extension of each source file is replaced by .o (Unix) or .obj (Win32). You can add objects to the list.

基于此,您将编写如下内容:

OBJECTS += common.o MD5_std.o

请注意,您还需要使用 "extern C"避免 name mangling 的链接规范.当使用来自 C 代码和此类编译的第三方对象时,这是能够链接的必要条件。您需要为相应的 C 函数编写此代码:

extern "C"
{
...
}

关于c++ - 将对象 (.o) 文件添加到 qtcreator 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com