使用 QT-Creator 编译和链接 C++ 和 C 程序

     2023-02-17     252

关键词:

【中文标题】使用 QT-Creator 编译和链接 C++ 和 C 程序【英文标题】:Compile and link C++ and C programms together with QT-Creator 【发布时间】:2016-01-24 17:55:25 【问题描述】:

所以我有多个 C++ 文件,基本上需要在我的程序的 C++ 部分完成后调用一个 C 函数。因此,如果有一种方法可以以某种方式神奇地“启动 C 文件”(我希望你知道我的意思),我也会很高兴听到这个消息。现在到我的实际问题:我试图在主 C++ 文件中的主函数末尾调用 C 函数。我已经看到了所有这些Call a C function from C++ code 并尝试以正确的方式做所有事情,我的 C 文件头文件看起来像这样:

 #ifndef H_FILE
 #define H_FILE

 #ifdef __cplusplus
 extern "C" 
 #endif

 void foo();
 void bar();

 #ifdef __cplusplus
 
 #endif

然后我尝试在 C++ 文件中包含头文件:

 extern "C" 
 #include "folder/file.h"
 

我还尝试了一个基本的#include "folder/file.h"

但是当我尝试使用我的 C 文件中的 foo() 函数时,我得到了一个未定义的引用错误。我的 .pro 文件看起来像这样:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Example
TEMPLATE = app
QMAKE_CXXFLAGS += -std=c++11

SOURCES += main.cpp\
folder/file.c \

HEADERS  += main.h \

所以我想我必须添加某种标志才能正确编译它,但我到底错过了什么?感谢您的帮助!

【问题讨论】:

您是否在 Qt Creator 中重新运行了 qmake? (我假设这就是你正在使用的) 是的,这就是我正在使用的。我只是这样做了,但不幸的是没有任何改变。 在运行 qmake 后尝试重建项目。如果代码没问题,它应该可以正确构建。 嗯,我想那是有问题的。 .pro 可以吗?我可能没有忘记什么?单击 Strg+Left Mouse Button 也会将我传送到 c 文件的 file.h 中的方法行。 您应该确保在您的.c 文件中有foo()bar() 的定义。您也可以尝试将 C 头文件添加到您的 .pro 文件中,看看会发生什么。 【参考方案1】:

你可能在你的头文件末尾少了一个#endif

【讨论】:

【参考方案2】:

你需要明确运行 qmake 然后重新构建

【讨论】:

添加更多细节

g++ 编译后的核心转储 + 与 jni 的链接以及随后使用 C++ 和 Java 执行应用程序

】g++编译后的核心转储+与jni的链接以及随后使用C++和Java执行应用程序【英文标题】:Coredumpfollowingg++compilation+linkwithjniandsubsequentexecutionofapplicationusingC++andJava【发布时间】:2012-12-1323:37:18【问题描述】:我需要在C++中执行一些任... 查看详情

使用 .lib 编译然后使用 .dll 在 C++ 中链接或显式调用 dll?

】使用.lib编译然后使用.dll在C++中链接或显式调用dll?【英文标题】:Use.libtocompilethenuse.dlltolinkorexplicitlycalldllinC++?【发布时间】:2017-09-0807:49:52【问题描述】:试图写一个VS2015.dll项目来了解.lib和.dll但被显式使用和隐式使用dll弄... 查看详情

链接错误犰狳 C++ 库与 LAPACK、BLAS 和 GFortran 未定义参考

...【发布时间】:2014-09-1704:41:42【问题描述】:我正在尝试使用LAPACK和BLAS使用MinGWforWindows32位编译Armadillo4.300(从源代码编译,从http://ic 查看详情

Mac OS c++ 链接 OpenCV 和 libtiff

...14:46【问题描述】:我最近写了一个代码来加载TIFF图像(使用libtiff)并用opencv显示它(我知道opencv可以读取tiff,但我需要读取它以获得更多较低级别的控制)。当我刚刚使用libtiff阅读TIFF并编译它时。没关系。编译命令如下:g+... 查看详情

无法将 c++ 项目完全编译和链接为静态库

】无法将c++项目完全编译和链接为静态库【英文标题】:Cannottotallycompileandlinkcppprojectasastaticlibrary【发布时间】:2016-09-0715:20:28【问题描述】:我已遵循此link并调整了其步骤以使其适用于我的项目。我的目标是创建一个libfile.a以... 查看详情

c++学习(四五六)cmake输出编译和链接信息(代码片段)

set(CMAKE_VERBOSE_MAKEFILEON) 查看详情

为啥 C 程序会在运行时针对 C++ 库编译和链接 C 编译器然后 SIGILL?

】为啥C程序会在运行时针对C++库编译和链接C编译器然后SIGILL?【英文标题】:WhywouldaCprogramcompileandlinkwithaCcompileragainstC++librariesthenSIGILLatruntime?为什么C程序会在运行时针对C++库编译和链接C编译器然后SIGILL?【发布时间】:2016-01-... 查看详情

如何将 lapack 和 BLAS 库链接到 C++ 代码

...2013-11-1004:29:30【问题描述】:以上是线性代数库。我正在使用犰狳,它就像一个c++包装器/框架,用于链接到fortran中更基本的线性代数库。我可以通过使用带有-I标志的gcc-c选项的#include"armadillo"轻松编译example.cpp。这会生成exa 查看详情

gcc和g++的区别解析

...阶段,g++会调用gcc来进行编译,但由于gcc不能链接程序所使用的库,所以需要通过g++来链接库文件,即在编译阶段都是使用 查看详情

如何从 Unix 命令行安装 c 和 c++ 编译器,然后与 Eclipse 一起使用?

】如何从Unix命令行安装c和c++编译器,然后与Eclipse一起使用?【英文标题】:Howtoinstallcandc++compilersfromUnixcommandlineandthenusewithEclipse?【发布时间】:2011-11-2119:57:47【问题描述】:是否有一个命令可以让我自动安装C和C++编译器/链接... 查看详情

C++ 从指针构造

...:11【问题描述】:我正在尝试使我的项目符合GCC以链接到使用MSVC编译的库(我没有源代码)。问题是这个库也存在于用GCC编译的linuxx86、x86_64和arm平台(我的项目是跨平台的),我不想编写很多平台相关(和编译器相关)的代码... 查看详情

指定要生成的备用编译器和链接器

...cc4.8),并且最近在它自己的目录中构建并安装了5.2。我想使用一个使用CC和CXX显式编译但使用隐式内置规则链接.o文件以构建可执行文件的makefile构建一些C++程序。当我在makefile上运行make时, 查看详情

由于在 Bjarne Stroustrup“使用 c++ 的编程和实践”中找不到符号而导致的链接错误

】由于在BjarneStroustrup“使用c++的编程和实践”中找不到符号而导致的链接错误【英文标题】:LinkingErrorduetosymbol(s)notfoundinBjarneStroustrup"ProgrammingandPracticesusingc++"【发布时间】:2020-04-0110:32:03【问题描述】:我是C++新手(以... 查看详情

c++中lib和dll的区别,生成以及使用详解

...行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的EXE文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件动态库:动... 查看详情

使用 gcc 和 g++ 分别编译带有 C 和 C++ 文件的项目?

】使用gcc和g++分别编译带有C和C++文件的项目?【英文标题】:CompileaprojectwithCandC++filesseparatelyusinggccandg++?【发布时间】:2015-05-2014:38:44【问题描述】:我有一个包含C和C++文件的项目,我创建了一个Makefile来编译这个项目。是否有... 查看详情

如何在命令行中编译和链接项目?

...tincommandline?【发布时间】:2016-11-0410:11:14【问题描述】:使用VisualStudio,我写了一个C++程序MyCat,所以它可以在VSIDE中编译生成一个MyCat.DLL文件。另外,我可以在命令行中构建它,利用解决方案文件MyCat.sln:setVCTargetsPath=C:\\ProgramF... 查看详情

IPP 和 DEV C++

...】:2010-01-3123:18:14【问题描述】:您好,我在windowsxpsp2中使用DEVC++编译器,最近我下载了IPP库。我安装成功,我将编译器目录从选项菜单设置到IPP目录,但是当我尝试编译ITT程序时,出现ITT函数的链接器错误。有解决办法吗?【... 查看详情

使用 Microsoft Visual C++ 6.0 解决 __imp__open 和其他类似名称的函数的链接错误

】使用MicrosoftVisualC++6.0解决__imp__open和其他类似名称的函数的链接错误【英文标题】:resolvelinkerrorsfor__imp__openandothersimilarlynamedfunctionsusingMicrosoftVisualC++6.0【发布时间】:2011-02-1811:56:55【问题描述】:在使用MicrosoftVisualC++6.0编译C++... 查看详情